Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
Заблокирован

Мультидиспетчеризация в Лиспе

19.02.2017, 00:50. Показов 6139. Ответов 107

Студворк — интернет-сервис помощи студентам
Допустим, имеем иерархию
Code
1
2
3
4
5
6
7
Животное
   Млекопитающее
       Собака
       Кошка
   Земноводное
       Лягушка
       Змея
и добавлены следующие правила
Code
1
2
3
4
5
6
7
8
9
10
foo = multimethod
foo добавить случай: (x = Млекопитающее y = Земноводное, ...)
foo добавить случай: (x = Собака y = Лягушка, ...)
 
далее, допустим
 
шарик = новая Собака
квакалка = новая Лягушка
 
foo(шарик, квакалка)
Какой из случаев, тип или подтип должен выбрать диспетчер, и почему, какое этому семантическое основание

И что будет, если мы засунем в один мультиметод одновременно экземпляры типа и подтипа? Что должен сделать диспетчер в этом случае?

Насколько надежным будет приложение, с использованием такого инструмента, учитывая то, что программисту трудно постоянно быть в напряжении и отслеживать возможные конфликты?

И наконец, чем оправданна такая экстремальная забубенность? Есть ли реальные кейзы для этого, или это все сделано для галочки, и никто реально с этим сомнительным инструментом не связывается?

Добавлено через 6 минут
Цитата Сообщение от asmquest Посмотреть сообщение
Насколько надежным будет приложение, с использованием такого инструмента, учитывая то, что программисту трудно постоянно быть в напряжении и отслеживать возможные конфликты?
и учитывая то, что конфликтовать могут разные модули?

Добавлено через 5 минут
Цитата Сообщение от asmquest Посмотреть сообщение
И что будет, если мы засунем в один мультиметод одновременно экземпляры типа и подтипа? Что должен сделать диспетчер в этом случае?
и, если, допустим, будет еще и конфликт такого рода:

Code
1
2
foo(Тип Подтип)
foo(Подтип Тип)
Где тип и подтип подтипы одного типа(надтипа)
?

Не является ли это все неоправданным переусложнением? Стоит ли овчинка выделки?

Добавлено через 13 минут
Короче говоря, хочется получить четкую и ясную схему расстановки приоритетов при возникновении разного рода конфликтов, и ясное семантическое обоснование этой схеме с точки зрения проектирования
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2017, 00:50
Ответы с готовыми решениями:

О Лиспе и гомоиконности
Ясно.

ООП в лиспе не обеспечивает синтаксическую абстракцию
Представим пример: theObject.copyDataTo(anotherObject) theObject.copyDataFrom(anotherObject) Это верный подход, потому что в...

Clojure Мультидиспетчеризация не по типам
что то я везде встречаю примеры мультидиспетчеризаци по типам. А как в лиспе диспетчеризовать не по типам, а по друзим вещам, по слотам,...

107
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
20.02.2017, 10:28
Студворк — интернет-сервис помощи студентам
asmquest, ну, что же... Код сопоставим с Лисповским. Никаких "фундаментальных преимуществ" я не вижу. Полагаю, что если выполнить беспристрастное сравнение (не в духе Глеба Капустина), то подтвердится мой вывод - в каких-то случаях изящнее Io, в каких-то - Лисп.

Цитата Сообщение от asmquest Посмотреть сообщение
я вообще то в байтодрочерстве не силен, я даже этот алгоритм не знаю, и знать не хочу. Да и Io для несколько других задач, для задач проектирования запилен.
- ценное признание... Но если ты не умеешь программировать, то какой смысл тебя вообще слушать?
0
Заблокирован
20.02.2017, 10:46  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Но если ты не умеешь программировать
то есть, вот это вот для тебя программирование????
Впрочем, кто бы сомневался, судя по твоим разговорам...

Добавлено через 1 минуту
Цитата Сообщение от Catstail Посмотреть сообщение
то какой смысл тебя вообще слушать?
дык, не слушай, иди гуляй
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
20.02.2017, 12:58
Цитата Сообщение от asmquest Посмотреть сообщение
гы, кто ж знал, что в лиспе допотопная реализация
Что значит допотопная реализация? Реализация именно такая, какая и должна быть. В Lisp список - это действительно односвязный список. Если нужен одномерный массив произвольного доступа, то он, естественно, есть. Так и называется - vector.
Это только во всяких малограмотных языках (навроде, Io или Python) списками называют всё что угодно, но только не список.

Добавлено через 3 минуты
Цитата Сообщение от asmquest Посмотреть сообщение
я вообще то в байтодрочерстве не силен
Какое отношение qsort имеет к байтодрочерству? Или ты этим термином называешь все что не осилил (то, что сложнее хеллоуворлдов)?

Добавлено через 3 минуты
Цитата Сообщение от Catstail Посмотреть сообщение
Io занятен, но интеллекта в него вложено меньше, чем в Лисп (он гораздо моложе Лиспа).
Зато пафоса вложено как надо
Цитата Сообщение от Catstail Посмотреть сообщение
Претендовать на универсальность Io пока никак не может
Да и не претендует, на самом деле.
Цитата Сообщение от Catstail Посмотреть сообщение
он и используется достаточно ограниченно
Не используется вообще, надо сказать.

Я вообще не против различных экспериментальных языков с идеями. Но в Io нет вообще ничего интересного, по крайней мере для меня.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
20.02.2017, 14:12
Цитата Сообщение от asmquest Посмотреть сообщение
дык, не слушай, иди гуляй
- "слушать" (даже явную чушь) - моя обязанность.

Добавлено через 1 минуту
Цитата Сообщение от asmquest Посмотреть сообщение
то есть, вот это вот для тебя программирование????
- на конкретный вопрос даю конкретный ответ: для меня "программировать" - значит писать программный код сложности от qsort и выше. А для тебя?
0
Заблокирован
20.02.2017, 14:25  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
сложнее
сложность такая сложная, lol
Цитата Сообщение от nullxdth Посмотреть сообщение
Так и называется - vector
ага, почитал про него. Куча особых случаев и костылей, очень идиоматично для лиспа

The vector function allows you to make fixed-size vectors with specific values.

However, these are literal vectors, so modifying them is not defined in LISP

Therefore, for programming, you should always use the vector function, or the more general function make-array to create vectors you plan to modify.

и т.д и т.п

https://www.tutorialspoint.com... ectors.htm

Не думай что вектор сможет сделать для тебя, думай что ты сможешь сделать для вектора!


Добавлено через 1 минуту
Цитата Сообщение от Catstail Посмотреть сообщение
А для тебя?
а для меня такой уровень -- это вообще не программирование. Программирование -- это инженерия, разного рода сортировщики называются программистами лишь по недоразумению
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
20.02.2017, 14:34
Цитата Сообщение от asmquest Посмотреть сообщение
ага, почитал про него. Куча особых случаев и костылей, очень идиоматично для лиспа
Ага. Ведь когда действительно что-то программируешь, необходимо иметь много структур данных и способов их использования, в зависимости от намерений. Но понятно, что такое разнообразие для игрушечных языков - overkill. На то они и игрушечные языки - не для разработки ПО. Для потехи.

Добавлено через 4 минуты
Цитата Сообщение от asmquest Посмотреть сообщение
разного рода сортировщики называются программистами лишь по недоразумению
Сразу видно человека не прочитавшего ни одной книги по алгоритмам. Тот кто прочёл хоть что-нибудь, понимает, что алгоритмы сортировки фундаментальны.
1
Заблокирован
20.02.2017, 14:36  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
необходимо иметь много структур данных
Верно, поэтому есть языки, которые позволяют создавать собственные структуры на уровне языка, которые годны для конкретной задачи, при этом избегают хардкорного зоопарка, заботясь о чистоте ядра. Лисп к ним не относится, естественно.

Добавлено через 1 минуту
Цитата Сообщение от nullxdth Посмотреть сообщение
что алгоритмы сортировки фундаментальны
Ну иди посортируй. Нервы успокаивает не хуже вязания на спицах.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
20.02.2017, 14:42
Цитата Сообщение от asmquest Посмотреть сообщение
ага, почитал про него.
- ты должен быть благодарен другим участникам... (nullxdth в частности). Благодаря ему, ты прочитал про векторы в Лиспе... Видишь, как хорошо! Только зачем с пафосом спорить на темы, в которых не компетентен?

Цитата Сообщение от asmquest Посмотреть сообщение
Программирование -- это инженерия
- конечно! И давай представим себе инженера, не знающего (и не желающего знать!) сопромат, строительную механику и т.п. Что такой инженер "наинженерит"? А это - твой портрет (только с заменой механических дисциплин на айтишные). Портрет будет совсем полным, если добавить еще приличное ЧСВ. Десятиклассник, выучивший названия фирм-производителей "материнок" и другого оборудования, никак не может быть признан инженером-электрощиком. Это тоже твой портрет (только с другого ракурса).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2017, 14:42

Мультидиспетчеризация и полиморфизм
Поскольку мультидиспетчеризация является частным случаем перегрузки -- перегрузкой в рантайме, значит она подпадает под определение ad-hoc...

Структуры на Лиспе
Добрый ночи, форумчанин! Прошу помогите мне пожалуйста. Задача 4. На аптечном складе хранятся лекарства. Сведения о...

Пятнашки на лиспе
Помогите пожалуйста разобраться в коде. Как произвести ввод данных? (defstruct board r c cells) (defun board-size (board) ...

Списки на Лиспе
даны списки L1,L2,L3. Если L1 является префиксом L2, а L3 - суффиксом L2, то ответ yes, иначе - no. Есть программа на прологе. Работает...

«Организация вычислений в Лиспе»
Помогите пожалуйста решить: 2. Написать с помощью композиции условных выражений функции от четырех аргументов AND4(x1 x2 x3 x4) и OR4(x1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
108
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru