Re: lazy-cat infinite realization on empty seq

2012-06-03 Thread Stephen Compall
On May 31, 2012, at 9:14 AM, michaelr524  wrote:

> Why the following triggers infinite realization of the infinite lazy
> seq

You've catted together an infinite seq of empty seqs, and forcing a lazy seq 
doesn't stop until either an element or known emptiness is found, whereas you 
provide neither. Consider: should the following terminate?

(doall (filter #(< % 42) (range)))

> and how I can work around it and make it stop when f1 returns an
> empty seq,

You need a sentinel so you can use take-while, or another code path in f2 that 
provides the aforementioned termination condition.

-- 
Stephen Compall
Greetings from sunny Appleton!

-- 
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


lazy-cat infinite realization on empty seq

2012-06-02 Thread michaelr524
Hi,

This has probably been asked a million times but I couldn't find
anything.

Why the following triggers infinite realization of the infinite lazy
seq and how I can work around it and make it stop when f1 returns an
empty seq,

(defn f1 [] (println "hello") [])
(defn f2 [] (lazy-cat (f1) (f2)))

(doseq [a (f2)]
 (pprint a))

Thanks,
Michael

-- 
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