なぜこれが機能しないのですか?
( ((lambda () (lambda (x) (funcall #'1+ x)))) 2)
; yields Compile-time error: illegal function call
funcall
私はこのような状況に遭遇し、後でそれを修正することが判明しました。
(funcall ((lambda () (lambda (x) (funcall #'1+ x)))) 2) ; => 3
どちらの名前空間に属している可能性のあるシンボルだけでなく、実際に呼び出している関数があるため、最初の関数が機能するように見えるため、混乱しています(つまり(type-of ((lambda () #'1+))) ; => FUNCTION
)。たとえば、ラムダを必要としないのと同じようなものだと思いました。私は何が欠けていますか?funcall
((lambda (x) x) :HI) ; => :HI