Consider the following program:
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回收已使用的列表元素呢?