0
如果我呼吁在REPL以下拉姆达,一切如我所期待的工作原理:现在了解非法嵌套`lambda`呼叫
CL-USER> (funcall (lambda (x) x) 3)
3
CL-USER> ((lambda (x) x) 3)
3
,如果我窝在lambda到另一个lambda,我可以”不用再打电话了。
CL-USER> (funcall (funcall (lambda() (lambda (x) x))) 3)
3
CL-USER> (funcall ((lambda() (lambda (x) x))) 3)
3
CL-USER> (((lambda() (lambda (x) x))) 3)
; in: ((LAMBDA() (LAMBDA (X) X))) 3
; (((LAMBDA() (LAMBDA (X) X))) 3)
;
; caught ERROR:
; illegal function call
;
; compilation unit finished
; caught 1 ERROR condition
; Evaluation aborted on #<SB-INT:COMPILED-PROGRAM-ERROR {1009F09D13}>.
我相信答案一定非常简单,但我一直没弄明白。为什么会发生?
在Lisp中没有什么像* empty lambda *。 –