I have a question about iterate and Clojure library funcs implemented similarly to iterate.
(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)))))
Without loop ... recur does iterate not consume its stack because it is operating on a lazy-sequence?