Я не знаю, если вы могли бы назвать его канонической формулировку, но связать локальную функцию я консультировал в руководстве GNU использовать «FLET»:пусть и FLET в Emacs Lisp
(defun adder-with-flet (x)
(flet ((f (x) (+ x 3)))
(f x))
)
Однако , случайно я попробовал (после некоторого проигрывания в Схеме) следующее выражение, в котором я привязываю лямбда-выражение к переменной с помощью «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, которые вы используете, в этом случае попробуйте' (требуешься «клы) 'заранее, как указано ниже (' flet' - это CommonLisp thingy). – Robert
В каком руководстве GNU рекомендуется использовать 'flet' здесь? – Stefan
От Emacs 25.1.1 Опишите функцию: flet Этот макрос устарел с 24.3; используйте 'cl-flet 'или' cl-letf' – AAAfarmclub