Si consideri il seguente programma:Haskell non raccoglie i rifiuti in testa a un elenco?
module Main where
import Control.Monad.List
main = runListT $ do
x <- ListT $ return $ [0..1000000000]
lift $ print x
Idealmente, vorremmo la lista da garbage collection come noi consumiamo, in modo che questo programma utilizza solo la memoria costante. Ma quando ho compilato ed eseguito con
ghc Main.hs -O2 -o Main
vedo che continuare a utilizzare sempre di più memoria. Come convinco Haskell a GC gli elementi consumati della lista?