2011-10-27 9 views
4

繰り返しと同様に実装された反復とClojureライブラリ関数に関する質問があります。Clojureライブラリ再帰ループなし... recur

(defn iterate 
2  "Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects" 
3  {:added "1.0" 
4  :static true} 
5  [f x] (cons x (lazy-seq (iterate f (f x))))) 

ループなし... recurは、レイジーシーケンスで動作しているため、スタックを消費しませんか?

答えて

4

はい、レイジーシーケンスで次の要素を強制するたびに、iterateは1回呼び出されるため、(即時)再帰はなく、スタックを消費しません。

関連する問題