【发布时间】:2013-04-20 03:36:43
【问题描述】:
在 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 的懒惰应该可以防止这一班轮崩溃。
【问题讨论】:
-
问题其实是太懒了。
标签: haskell lazy-evaluation ghci