假設我們有一個符號,一個符號值和一個函數值以及一個屬性列表,我們稱之爲q
。還假設我們有一個函數f
,其形式參數v
,例如, (f (v) ...)
並調用功能,如(f q)
。Common-Lisp:綁定形式參數,正是通過了什麼?
我的問題是:究竟是什麼傳遞給v
?是
- 的值爲
q
; - 函數值爲
q
; - 的
q
財產清單,
傳遞到形式參數v
?
如果它們都傳遞給v
,那麼我的事實,我們真正需要的功能funcall
和apply
不解。如果v
確實同時具有該值和函數值,那麼它當然可以決定當我們編寫(v 3)
時,它必須使用函數值v
而不是(funcall v 3)
。當我們使用(setq v 3)
時,它必須使用v
的值。
究竟是什麼傳遞給v
以及爲什麼v
不是符號,而只是一個「參數」或「變量」,這對我來說是一個謎。但我相信它在Lisp 1.5中確實是一個象徵。但在Lisp中,似乎有些混亂的空間。
我覺得這個信息非常有幫助。文獻中有時令人困惑。我在文獻中看到了關於這一切的非常不同的觀點和解釋。我有時會懷疑這是不是由lisp的悠久歷史造成的。混淆符號與變量,將函數傳遞給函數,關於綁定的術語是長期混淆的根源。 –