Haskell-Kompilierung mit -O2 erhöht die Speichernutzung drastisch

Dieses einfache Programm läuft in konstantem Speicherbereich, wenn es ohne Flags mit ghc kompiliert wird:

import Data.List
f x = x*x
g a = foldl' (+) (f a) [1..(1073741824-1)]
main = do putStrLn $ show $ foldl' (+) 0 $ map g [0,1]

Wenn mit ghc -O2 kompiliert, überschreitet die Speichernutzung die Systemressourcen (8 GB).

Changing main to:

main = do putStrLn $ show $ foldl' (+) 0 [g 0, g 1]

Beseitigt das Problem, sodass es anscheinend etwas mit der Karte zu tun hat.

Kann jemand das Verhalten erklären und vielleicht wie man es umgehen kann?

GHC-Version ist: Glasgow Haskell Compiler, Version 7.4.1, Stufe 2, gebootet von GHC-Version 7.4.1

Antworten auf die Frage(2)

Ihre Antwort auf die Frage