Введя следующее в GHCI в Windows:
foldl (+) 0 $ take 100000000 $ map sqrt [1..]
дает:
<interactive>: out of memory
при компиляции (с помощью GHC) и запуске этой программы:
main = do
let score = foldl (+) 0 $ take 100000000 $ map sqrt [1..]
putStrLn $ show score
печатает ожидаемый ответ без ошибки памяти.
Есть ли причина для такого поведения? Мне кажется, что лень Haskell должна предотвратить сбой этого единственного лайнера.