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