GHCI not so lazy on Windows?

ghci, haskell, lazy-evaluation

Solution

It's just GHC doing strictness and other optimizations. GHCi doesn't do the same sort of optimizations that the full compiler does.

In particular that `foldl` is building up way too many thunks and those are causing your overflow. However when I change this to the strict `foldl'` even GHCi can handle it. You should read this question to learn a bit more about why this is.

Problem

Typing following into GHCI on Windows: ``` foldl (+) 0 $ take 100000000 $ map sqrt [1..] ``` gives: ``` <interactive>: out of memory ``` while compiling (with GHC) and running this program: ``` main = do let score = foldl (+) 0 $ take 100000000 $ map sqrt [1..] putStrLn $ show score ``` prints expected answer without memory error. Is there a reason for this behavior ? It seems to me like laziness of Haskell should prevent this one liner from crashing.

Original source

Related problems