Ok, I take it back. (no pun intended)

I know that this used to be a problem, but looking through my email
history, it appears that the over-eager take was reported by Chouser,
and subsequently fixed by Rhickey.

On Sat, Jan 31, 2009 at 9:47 AM, André Thieme
<splendidl...@googlemail.com> wrote:
>
> On 31 Jan., 02:44, Daniel Renfer <d...@kronkltd.net> wrote:
>> user=> (take 0 (lazy-cat [(println 10)] [(println 20)]))
>> 10
>> nil
>>
>> What you see here is not an issue with lazy-cat, but rather an issue
>> with take. The current implementation of take evaluates one more than
>> the n passed to it.
>
> I don't think so:
>
> (defn take
>  "Returns a lazy seq of the first n items in coll, or all items if
>  there are fewer than n."
>  [n coll]
>    (when (and (pos? n) (seq coll))
>      (lazy-cons (first coll) (when (> n 1) (take (dec n) (rest
> coll))))))
>
> As we can see (pos? n) is the first thing TAKE does.
> As (pos? 0) ==> false the execution of take ends right here.
> The (seq coll) is never reached.
> >
>

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