2012-01-04 11 views
1

Helo、私はclojureを学習するために、シーケンスに作用するclojure.core関数に興味を持っています。最近、私はいくつかの奇妙な行動に気づいたとfolling表現との間の差の、について説明したいと思います:clojureの格納と式のシーケンスの使用

ことは私は何をしようとしていることは、これは次のとおりです。

user=> (reduce + (take-while (partial > 1000) (iterate inc 1))) 
499500 

しかし、私はdef(iterate inc 1)を保存するときエラーが表示されます。

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はレイジーシーケンスですが、何かが見つからないことがわかります...

ありがとうございます。

答えて

3

あなたはaを呼び出す

(reduce + (take-while (partial > 1000) a)) 

(a)試みをやっている必要がありますが、それは機能しません。

+1

ahhはい、clojure.lang.consがclojure.lang.IFnにキャストされているというエラーメッセージについて説明しています。 – wespiserA

関連する問題