2010-05-26 27 views
2

在下面的Lisp REPL互動:成員和defparameter

CL-USER> (defparameter *unison* 0) 
*UNISON* 
CL-USER> (member *unison* '(*unison*)) 
NIL 

爲什麼零退換嗎?

回答

5

因爲*unison*變量被綁定到0,並且該列表只有一個*unison*符號,因爲它被引用。在比較試試這個:

(member *unison* (list *unison*)) 

這實際上評估第二*unison*返回0,導致(0)列表。

+0

或者(不太可能是他想要的)(會員'* unison *'(\ * unison \ *))。 – 2010-05-27 20:42:05

+0

(是的,但考慮到引用可能會引起混淆,我也避免提及它 - 談論它需要單獨的答案,如果周圍沒有這樣的答案,我會感到驚訝......) – 2010-05-27 21:11:42