在 Windows 上的 GHCI 中输入以下内容:
foldl (+) 0 $ take 100000000 $ map sqrt [1..]
给出:
<interactive>: out of memory
在编译(使用 GHC)并运行此程序时:
main = do
let score = foldl (+) 0 $ take 100000000 $ map sqrt [1..]
putStrLn $ show score
打印没有内存错误的预期答案。
这种行为有原因吗?在我看来,Haskell 的懒惰应该可以防止这一班轮崩溃。