Category: авто

Category was added automatically. Read all entries about "авто".

common lisp: карринг и car of compound form

Очень хочу разобраться почему в стандарте common lisp не реализованы две фичи, которые, как мне кажется, были бы весьма полезны. Ну, с каррингом - собственно, сабж; второй пункт связан с CLHS: Conses as Forms: не могу понять почему не предусмотрен случай `if the car of compound form is cons`, в котором бы указывалось, что его нужно вычислить и далее уже смотреть - символ это или лямбда и тп. Это позволило бы использовать конструкции вида ((if (> b 0) '+ '-) a b), или, если бы был карринг, ((if (> b 0) (+) (-)) a b), ((if (> b 0) (+ a) (- a)) b) и множество других.

У меня самого возникают разные догадки о сложности каррирования функций с переменным числом аргументов, но сильнее всего - идея, что такие функции должны при применении к любому числу аргументов всегда возвращать лямбды, а как значения интерпретироваться только в контексте использования, либо при вызове некоторого раскрывающего такую лямбду функционала.

Пример: функция +, принимающая 1 либо больше аргументов.
(+) -> lambda,
(+ 1) -> lambda,
(+ 1 2) -> lambda и так далее,
но
(+ (+ 1 2) 1) ->редукция (+ 3 1) -> lambda.


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