Hi,

On Jun 29, 4:24 pm, B Smith-Mannschott <bsmith.o...@gmail.com> wrote:

> This fully realizes the (range 10000) before calling foo, which is
> wasteful if foo is written to consume more incrementally.
>
> I've run into this trouble with concat, when I've wanted a lazy
> sequence of the concatenation of the sequences produced by a list
> comprehension:
>
> (apply concat (for [n (range 1000)]
>                   (range 100)))
>
> Concat gets passed a fully realized sequence of 1000 lazy sequences of
> 100 integers.

I don't think that this is true. Otherwise the following wouldn't
work:
user=> (defn take-5 [& more] (take 5 more))
#'user/take-5
user=> (apply take-5 (iterate inc 0))
(0 1 2 3 4)

iterate creates an infinite sequence. So if the problem was apply, the
second call should not return.

If more than necessary is realised, I suspect some effect with chunked
seqs.

Sincerely
Meikel

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

Reply via email to