I think that unfold (or co-reduce, or generate) should find its way in contrib.
I am not sure we need finished arg though. The traditional finish in the seq family is nil. My own version of unfold: (defn unfold "(unfold seed grow) use the seed and a function grow that returns an element and another seed to creates a lazy seq. The seq is stopped the grow function returns nil." [seed grow] (if-let [[elt next-seed] (grow seed)] (cons elt (lazy-seq (unfold next-seed grow))) ())) Whether the cons is in or outside the lazy-seq is debatable. (I like to think of seq as the fixpoint of the functor (X -> Cons Object (lazy X))) Best, Nicolas. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en