Я не знаю, можно ли назвать это канонической формулировкой, но для привязки локальной функции в руководстве 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' orcl-letf ' - person AAAfarmclub   schedule 01.01.2017