Я не знаю, можно ли назвать это канонической формулировкой, но для привязки локальной функции в руководстве GNU я советую использовать 'flet':
(defun adder-with-flet (x)
(flet ( (f (x) (+ x 3)) )
(f x))
)
Однако случайно я попробовал (немного поиграв в Scheme) следующее выражение, в котором я привязываю лямбда-выражение к переменной с помощью let, и оно также работает, если я передаю функцию mapcar *:
(defun adder-with-let (x)
(let ( (f (lambda (x) (+ x 3))) )
(car (mapcar* f (list x)) ))
)
И обе функции работают:
(adder-with-flet 3) ==> 6
(adder-with-let 3) ==> 6
Почему работает второй? Я не могу найти никакой документации, где можно было бы использовать let для привязки функций к символам.
flet
может быть недоступен в используемой вами версии emacs, и в этом случае попробуйте заранее(require 'cl)
, как указано ниже (flet
- это вещь CommonLisp). - person Robert   schedule 01.05.2013flet
? - person Stefan   schedule 27.06.2013cl-flet' or
cl-letf ' - person AAAfarmclub   schedule 01.01.2017