我不知道,如果你把它叫做规范的制定,但是结合本地函数,我由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