2011-10-27 3 views
4

iterate 및 Clojure 라이브러리 funcs 반복적으로 구현 된에 대한 질문이 있습니다.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))))) 

반복하지 않음 ... 반복은 지연 시퀀스에서 작동하므로 반복을 반복하지 않습니까?

답변

4

예, 지연 시퀀스에서 다음 요소를 강제 할 때마다 iterate가 한 번 호출되므로 (즉각적인) 재귀가없고 스택을 사용하지 않습니다.