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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en