1
Helo,爲了學習clojure,我對clojure.core函數產生了興趣,這些函數對序列起作用。最近,我注意到一些奇怪的行爲,並希望folling表達之間的差異的交代:clojure存儲與在表達式中使用序列
我試圖做到這一點的是:
user=> (reduce + (take-while (partial > 1000) (iterate inc 1)))
499500
然而,當我存儲(iterate inc 1)
與def
一得到一個錯誤:
user=> (def a (iterate inc 1))
#'user/a
user=> (reduce + (take-while (partial > 1000) (a)))
java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
可能有人請解釋什麼是存儲iterate inc 1
並直接在表達式中使用它的區別?我知道a
是一個懶惰的序列,但我缺少一些東西...
非常感謝您的時間。
ahh是的,這解釋了有關將clojure.lang.cons轉換爲clojure.lang.IFn的錯誤消息。 – wespiserA 2012-01-04 14:54:25