История изменений
Исправление
dave,
(текущая версия)
:
Но generic, в отличие от lambda, это часть CLOS и отрицать прямую связь между ООП и generic мне представляется невозможным.
Раз уж затронули эту тему...
В лиспе все не так просто. Лямбды используются в CLOS, но по-другому. Да, я думаю, ты читал AMOP - видел у тебя в блоге один пример оттуда :)
Исходная версия
dave,
:
Но generic, в отличие от lambda, это часть CLOS и отрицать прямую связь между ООП и generic мне представляется невозможным.
Раз уж затронули эту тему...
В лиспе все не так просто. Как ни странно, но обобщенная функция внутри CLOS обычно реализуются через хеш-таблицу, где в простейшем случае (без специализатора eql) ключами являются типы аргументов, а значениями являются те самые лямбды, которые представляют собой так называемые «определяющие функции» (discriminating functions), которые в свою очередь строятся из других лямбд - «эффективных функций методов» (effective method functions). Вызов обобщенной функции - это просто вызов определяющей функции.
В общем, лямбды используются в CLOS, но по-другому. Да, я думаю, ты читал AMOP - видел у тебя в блоге один пример оттуда :)