Рассмотрим следующую программу:Haskell не мусор собирает голову списка?
module Main where
import Control.Monad.List
main = runListT $ do
x <- ListT $ return $ [0..1000000000]
lift $ print x
В идеале мы хотели бы, чтобы список будет мусора, как мы потребляем его, так что эта программа использует только постоянную память. Но когда я скомпилировать и запустить его с
ghc Main.hs -O2 -o Main
я вижу, что это продолжать использовать все больше и больше памяти. Как убедить Haskell в GC потребляемые элементы списка?