有问题的性别是
(((lambda (b)
(lambda (a)
(+ b a))) 3) 5)
Run Code Online (Sandbox Code Playgroud)
对我来说,它看起来应该评估8,并且在其他lisps(例如Racket)中它确实如此,但在elisp中它反而抛出了这个错误:
Debugger entered--Lisp error: (invalid-function ((lambda (b) (lambda (a) (+ b a))) 3))
Run Code Online (Sandbox Code Playgroud)
它似乎在告诉我
((lambda (b)
(lambda (a)
(+ b a))) 3)
Run Code Online (Sandbox Code Playgroud)
不是有效的功能.这似乎是错误的,因为当我评估那个表达式时,我得到了
(lambda (a) (+ b a))
Run Code Online (Sandbox Code Playgroud)
这看起来对我来说是一个有效的功能.有谁知道为什么会这样?它与动态范围有关吗?