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 *。 –