我不知道你是否会把它称为规范公式,但绑定一个本地函数我被GNU手册建议使用'flet':
(defun adder-with-flet (x)
(flet ( (f (x) (+ x 3)) )
(f x))
)
Run Code Online (Sandbox Code Playgroud)
然而,偶然我尝试(在使用Scheme之后)下面的表达式,其中我使用'let'将lambda表达式绑定到变量,并且如果我将函数传递给mapcar*它也可以工作:
(defun adder-with-let (x)
(let ( (f (lambda (x) (+ x 3))) )
(car (mapcar* f (list x)) ))
)
Run Code Online (Sandbox Code Playgroud)
这两个功能都有效:
(adder-with-flet 3) ==> 6
(adder-with-let 3) ==> 6
Run Code Online (Sandbox Code Playgroud)
为什么第二个有效?我找不到任何文档,其中'let'可用于将函数绑定到符号.