我不知道,如果你把它叫做規範的制定,但是結合本地函數,我由GNU手冊建議使用「FLET」:讓和FLET中的Emacs Lisp
(defun adder-with-flet (x)
(flet ((f (x) (+ x 3)))
(f x))
)
然而,偶然我嘗試了(在Scheme中玩了一下之後)下面的表達式,其中我使用'let'將lambda表達式綁定到一個變量,並且如果我將該函數傳遞給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的版本,在這種情況下嘗試`(需要「CL )`事先如下所述(`flet`是CommonLisp thingy)。 – Robert 2013-05-01 13:47:17
哪個GNU手冊推薦在這裏使用`flet`? – Stefan 2013-06-27 15:05:40
來自Emacs 25.1.1描述函數:flet自24.3起,此宏已過時;使用'cl-flet'或'cl-letf' – AAAfarmclub 2017-01-01 06:29:58