在關閉,如果你運行下面的代碼:爲什麼在Clojure中使用conj的列表需要撇號?
(conj (1 2 3) 4)
它會報錯,說:
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn
但是,如果列表之前放置一個撇號,它會運行正常
(conj '(1 2 3) 4)
我的問題是,這個撇號究竟做了什麼,爲什麼它實際上需要這個列表?
我注意到,當您使用矢量
(conj [1 2 3] 4)
其實這種情況不會發生,即使你使用一個撇號(conj '[1 2 3])
,它仍然做工精細,並返回相同的結果。
撇號究竟做什麼,爲什麼列表需要它,但一個向量不? (道歉,如果這是一個初學者/愚蠢的問題,我仍然在學習。一個完整的答案,將不勝感激)
[Clojure中'()和(list)有什麼區別?](http://stackoverflow.com/questions/10296857/whats-the-difference-between-and-list-in-clojure ) – cfrick
嘗試''[1 2 x]'用'x'作爲變量,並且會有區別 – coredump