Thanks Mauricio ... I think I understand it now.
Regards,
Kashyap

On Monday, January 13, 2014 9:48:28 PM UTC+5:30, Mauricio Aldazosa wrote:
>
>
>
> On Mon, Jan 13, 2014 at 8:49 AM, Kashyap CK <ckka...@gmail.com<javascript:>
> > wrote:
>
>>
>> I'd really appreciate it if someone could tell me what's going on when I 
>> do the following -
>>
>> user> (defn xx [] (map println [1 2 3 4 5 6]))
>> #'user/xx
>> user> (take 2 (xx))
>> (1
>> 2
>> 3
>> 4
>> 5
>> 6
>> nil nil)
>> user> 
>>
>
> There are many things that you need to be aware of here:
>
>    1. Lazy seqs are chunked. As an optimization they are realized 32 
>    elementes at a time. There are ways to go around this: 
>    http://blog.fogus.me/2010/01/22/de-chunkifying-sequences-in-clojure/ 
>    2. map returns a lazy seq of the return value of the function it uses, 
>    and println returns nil as a result.
>    3. Lazy seqs and IO usually are a confusing mix.
>
> So, as a result of chunking a println for all six elements is made. Each 
> of this calls, as a side effect prints the number and, returns nil. Then 
> you ask for the first two return values of that sequence, hence the "nil 
> nil". Everything is getting mixed up at the repl so it seems confusing, but 
> the result of xx is (nil nil) and the side-effect of it is the printing of 
> 1 2 3 4 5 6.
> Cheers,
> Mauricio
>

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to