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