Мультидиспетчеризация в Лиспе - Священные войны
Формулировка задачи:
Допустим, имеем иерархию
и добавлены следующие правила
Какой из случаев, тип или подтип должен выбрать диспетчер, и почему, какое этому семантическое основание
И что будет, если мы засунем в один мультиметод одновременно экземпляры типа и подтипа? Что должен сделать диспетчер в этом случае?
Насколько надежным будет приложение, с использованием такого инструмента, учитывая то, что программисту трудно постоянно быть в напряжении и отслеживать возможные конфликты?
И наконец, чем оправданна такая экстремальная забубенность? Есть ли реальные кейзы для этого, или это все сделано для галочки, и никто реально с этим сомнительным инструментом не связывается?
и учитывая то, что конфликтовать могут разные модули?
и, если, допустим, будет еще и конфликт такого рода:
Где тип и подтип подтипы одного типа(надтипа)
?
Не является ли это все неоправданным переусложнением? Стоит ли овчинка выделки?
Животное Млекопитающее Собака Кошка Земноводное Лягушка Змея
foo = multimethod foo добавить случай: (x = Млекопитающее y = Земноводное, ...) foo добавить случай: (x = Собака y = Лягушка, ...) далее, допустим шарик = новая Собака квакалка = новая Лягушка foo(шарик, квакалка)
Насколько надежным будет приложение, с использованием такого инструмента, учитывая то, что программисту трудно постоянно быть в напряжении и отслеживать возможные конфликты?
И что будет, если мы засунем в один мультиметод одновременно экземпляры типа и подтипа? Что должен сделать диспетчер в этом случае?
foo(Тип Подтип) foo(Подтип Тип)
Короче говоря, хочется получить четкую и ясную схему расстановки приоритетов при возникновении разного рода конфликтов, и ясное семантическое обоснование этой схеме с точки зрения проектирования
Решение задачи: «Мультидиспетчеризация в Лиспе»
textual
Листинг программы
foo добавить случай: (x = Животное y = Земноводное, ...) foo добавить случай: (x = Земноводное y = Животное, ...)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д