私はClojureとLispを初めて使いましたが、これまでのところこれまで好きでした。私は現在、lazy-seqとClojureが無限のシーケンスを定義する能力を理解しようとしています。私が実行した場合初級Clojurist遅延シーケンスエラー:ISeqの作成方法がわからない:java.lang.Long
(defn geometric
([] geometric 1)
([n] (cons n (lazy-seq (geometric (* n 1/2))))))
:
(geometric)
私のREPLで期待どおりに、それは、1を返し、私は次のコードを持っています。
IllegalArgumentException Don't know how to create ISeq from:
java.lang.Long clojure.lang.RT.seqFrom
私は何を得ることを期待することは次のとおりです:
(1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 1/512)
は、なぜ私はこのエラーを取得しています、私は実行する場合は、
(take 10 (geometric))
は、私は次のエラーを取得しますか?私が正しく理解していれば、レイジーシーケンスに賛成できなければならず、再帰的に評価されたシーケンスの最初の10個の値を返すべきです。