LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

Но generic, в отличие от lambda, это часть CLOS и отрицать прямую связь между ООП и generic мне представляется невозможным.

Раз уж затронули эту тему...

В лиспе все не так просто. Лямбды используются в CLOS, но по-другому. Да, я думаю, ты читал AMOP - видел у тебя в блоге один пример оттуда :)

Исходная версия dave, :

Но generic, в отличие от lambda, это часть CLOS и отрицать прямую связь между ООП и generic мне представляется невозможным.

Раз уж затронули эту тему...

В лиспе все не так просто. Как ни странно, но обобщенная функция внутри CLOS обычно реализуются через хеш-таблицу, где в простейшем случае (без специализатора eql) ключами являются типы аргументов, а значениями являются те самые лямбды, которые представляют собой так называемые «определяющие функции» (discriminating functions), которые в свою очередь строятся из других лямбд - «эффективных функций методов» (effective method functions). Вызов обобщенной функции - это просто вызов определяющей функции.

В общем, лямбды используются в CLOS, но по-другому. Да, я думаю, ты читал AMOP - видел у тебя в блоге один пример оттуда :)