Just pay attention that when using later elements you don't need the
earlier elements, and you should be fine. (IIRC)

2012/8/1 Vinay D.E <devi...@gmail.com>:
> Thanks Sean & Carlo for the detailed comments!
> The gap in my understanding was exactly *how* lazy 'lazy evaluation' is, so
> the evaluation of 'i' is deferred until it is totally unavoidable.
>
> Just curious, but if I chained a large number of such lazy constructs, isn't
> there danger of a big unpredictable spike in CPU / Memory if something
> deeply nested is accessed ?
> Is there someplace where this is discussed in detail, pros / cons, caveats,
> concepts etc ? Any books that you think I should read ?
>
> Regards
> Vinay
>
>
>
> On Tuesday, 31 July 2012 12:05:13 UTC+5:30, Sean Corfield wrote:
>>
>> > I tried putting a print and it works as expected.
>>
>> Because you are realizing the whole of i to print it.
>>
>> > 1) I assumed that printing out [i @a] instead of [@a i] should realize
>> > 'i'
>>
>> No, [i @a] creates a two-element vector of a lazy-seq and a value (the
>> deref of a). Then, when the REPL prints that vector, it realizes the
>> lazy-seq.
>>
>> > 2) If I put a breakpoint in the predicate for take-while, it gets hit (
>> > I
>>
>> Yes, it is hit while i is being realized.
>>
>> > 3) This is the strangest observation of all: In the debugger I can see
>> > that
>> > 'a' is getting incremented, its changing when the breakpoint is hit!
>> > but
>> > the baffling thing is, when the result is printed out, I still get 0 as
>> > the
>> > value for a.
>>
>> Because the value of @a is bound before i is realized, so 0 is bound
>> into the vector, and then i is realized during which process you see a
>> being incremented.
>>
>> > Isn't (print i) the same as [i @a] ?  since i is realized first,
>> > shouldn't
>> > @a  be correctly printed?
>>
>> No, see above.
>>
>> > Why is the breakpoint showing me that a is changing ?
>>
>> Because it _is_ changing but _after_ the top level of the vector has
>> been evaluated.
>> --
>> Sean A Corfield -- (904) 302-SEAN
>> An Architect's View -- http://corfield.org/
>> World Singles, LLC. -- http://worldsingles.com/
>>
>> "Perfection is the enemy of the good."
>> -- Gustave Flaubert, French realist novelist (1821-1880)
>
> --
> 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 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