Thank you David for looking into this so quickly.  For now I am working 
around this by not destructuring, but I look forward to the patch.  Thanks.

-Frank

On Thursday, November 15, 2012 7:41:39 PM UTC-5, dmiller wrote:
>
> The difference is that the JVM version is correct and the CLR 
> implementation has a bug.
>
> I'll fix it in the current branch and try to get a patched 1.4 out as soon 
> as I can.
>
> -- Above is all you really need to know, but I find myself forced to 
> continue. :) --
>
> This bug has sitting there from the first commit in the public repo. (That 
> would be early 2009.)  The line of code in question is testing for the 
> IList interface.  The line has a comment that the JVM implementation 
> changed from IList to RandomAccess, which has no equivalent in the CLR.  I 
> didn't know why the change was made, so I left it alone.  (The history is 
> lost, but I can place the JVM version change between Nov 08 and Feb 09.) 
> Four years later, I've just discovered the reason.  The bug only surfaces 
> in certain circumstances on infinite (lazy) sequences -- and specifically 
> it is triggered by destructuring.  LazySeq itself is not the problem -- 
> that's used everywhere.
>
> -David
>
>
>
> On Thursday, November 15, 2012 9:23:05 AM UTC-6, ffailla wrote:
>>
>> I believe I have discovered differing behavior between the JVM and CLR 
>> implementations when running the following statement:
>>
>> user> (let [foo (repeatedly (fn [] (let [r (rand)]
>> (println "in-repeat: " r)
>> r)))
>>      [f & rst] foo]
>>      (println "return: " f))
>>
>> When run on the JVM with clojure 1.4.0, I get the following output:
>>
>> in-repeat:  0.6929552277817549
>> in-repeat:  0.7005322422752974
>> return:  0.6929552277817549
>> nil
>> user> 
>>
>> When run on the CLR with clojure-clr 1.4.0, the random number will be 
>> printed from "in-repeat" infinitely, never to return.
>>
>> Is this difference between the JVM and CLR implementations when 
>> destructuring a lazy sequence known?  
>>
>> Also, why was the random number printed twice on the JVM side.  I haven't 
>> looked an the implementation, but I would guess this would be due to 
>> chunking the sequence. Thanks.
>>
>> -Frank Failla 
>>
>

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