4

なぜこれが機能しないのですか?

( ((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

4

4 に答える 4