It is definitely the strictness analyzer biting you here. In ghci,
the behavior of these two programs is identical (stack overflow). As
kalman said, if you replate sum with foldl' (+) 0 in each of these
programs, the behavior is still identical (correct).
OK, I could replicate that result. Awesome, thanks a lot!
As a side note, one of the monad laws is this:
return x >>= f = f x
So your two programs are semantically equivalent (there's nothing
about IO that forces the evaluation of the list).
OK, thanks, this is an important point. So maybe I should have done this?
main = print $ foldl1' (+) $! take 1000000 randFloats
My intuition tells me that the $! (and `seq`) just reduces one level (to
WHNF?). If so, is there a way to force complete evaluation (so that
nothing is reducible anymore)?
Thanks,
Milos
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe