IRC channel logs


back to list of logs

<libfud>lazy evaluation is incredible
***apteryx is now known as Guest67236
***apteryx_ is now known as apteryx
<manumanumanu>Happy Tuesday/Wednesday, guilers!
<manumanumanu>wingo: did guile 3's optimizer start doing more loop unrolling? I am getting 12 unrolls at the repl for my new try at writing a looping facility, whereas my previous one got me at most 5 (but that was for guile 2.2 iirc)
<manumanumanu>for a _very_ simple loop, I must say
<wingo>manumanumanu: humm i don't know. i don't think the peval limits were changed
<manumanumanu>(loop ((:for a (up-from 0 12)) (b (in-cycle (in-list '(1 2 3))))) (display b)) => (let ((b (gen))) (display b) (let ((b (gen))) (display b) ... )
<wingo>yeah peval is the same. could be loop peeling, but i think that is also unchanged wrt 2.2
<manumanumanu>strange. I'll try the code in 2.2 whenever I am done.
<manumanumanu>But any kind of accumulator turns into a let loop directly
<manumanumanu>(loop ((:for a (in-list '(1 2 3))) (:acc acc (summing a))) => acc) (let loopy-loop ...)
<manumanumanu>whereas something like (loop name ((:for a (up-from 0 10))) => 0 (+ a (name)) correctly pevals to 45.
<manumanumanu>It is very different code, though.