La compilación de Haskell con -O2 aumenta drásticamente el uso de memoria

Este sencillo programa se ejecuta en un espacio de memoria constante cuando se compila sin marcas con ghc:

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]

Cuando se compila con ghc -O2, el uso de la memoria excede los recursos del sistema (8GB).

Cambio de principal a:

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

alivia el problema, por lo que parece tener algo que ver con el mapa.

¿Alguien puede explicar el comportamiento y tal vez cómo solucionarlo?

La versión de GHC es: Glasgow Haskell Compiler, Versión 7.4.1, etapa 2 arrancada por la versión de GHC 7.4.1

Respuestas a la pregunta(2)

Su respuesta a la pregunta