2015-03-13 37 views
0

剛剛開始使用Common Lisp(使用L(λ)THW),並在(atom atom)中輸入,因此期望得到nil。但相反,我得到了錯誤當給定函數作爲參數時,Common Lisp:predicate返回一個錯誤

錯誤[!]:變量「ATOM」未綁定。

同樣的結果是,當我試圖「餵養」任何謂詞的功能,據我所知。這是爲什麼?具體而言,不是函數(或表達式)只是列表?

+2

不是真的。常見的LISP是LISP-2,它具有用於函數和變量的單獨命名空間。您必須應用'function'或'#''來引用參數列表中的'atom'而不是變量'atom'。 – 2015-03-13 15:46:26

回答

3

這是因爲Common Lisp是一個Lisp-2。這意味着變量和函數駐留在不同的名稱空間中。要使用功能的值,則必須從函數的命名空間與功能function取,

(atom (function atom)) 

至於這個快捷方式,你可以用#',而不是加前綴:

(atom #'atom) 
+0

如果你做了類似'(let((f(lambda(x)x))(f f))'的話,與你得到的錯誤進行比較可能也是有幫助的。請注意,這不是同一種錯誤。 – 2015-03-14 02:48:16

相關問題