Betrachten Sie das folgende Programm:Haskell sammelt nicht Müll den Kopf einer Liste?
module Main where
import Control.Monad.List
main = runListT $ do
x <- ListT $ return $ [0..1000000000]
lift $ print x
Idealerweise würden wir die Liste Müll gesammelt werden, wie wir sie verbrauchen, so dass dieses Programm nur konstant Speicher verwendet. Aber wenn ich kompilieren und führen Sie es mit
ghc Main.hs -O2 -o Main
Ich sehe, dass es mehr und mehr Speicher verwenden halten. Wie überzeuge ich Haskell, die verbrauchten Elemente der Liste zu GC zu zählen?