On Fri, Mar 20, 2009 at 2:01 PM, GüŸnther Schmidt <gue.schm...@web.de> wrote:
> The problem occurs when the result value is needed and thus the thunks need
> to be reduced, starting with the outermost, which can't be reduced without
> reducing the next one .... etc and it's these reduction steps that are
> pushed on the stack until its size cause a stack-overflow.

Oh yes of course! Indeed a foldl:

foldl f z []     = z
foldl f z (x:xs) = foldl f (z `f` x) xs

Is compiled to:

foldl f z xs = case xs of
                 []     -> z
                 (x:xs) -> let z' = f z x
                           in foldl f z' x

So the z' is allocated on the heap.

So it turns out that in my " Foldr Foldl Foldl' " article the stack
overflow message is listed to soon. It should actually be lised after
the:

((((((0 + 1) + 2) + 3) + 4) + ...) + 999999) + 1000000

I will fix it when I get home from work and nobody has beat me to it.

Thanks for pointing this out!

regards,

Bas
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to