基本问题伴随着来自 GHCI 解释器的引用。是的,我知道代码的假定用途是将其编译为可执行文件,但是,由于我是 Haskell 的初学者,GHCI 似乎非常适合学习一些 Haskell。
当我使用重计算负载算法时,有时会遇到如下消息:
Prelude Data.List> foldl' (+) 0 [1..2*10^8]
20000000100000000
it :: (Num b, Enum b) => b
(8.35 secs, 17,600,063,056 bytes)
同时,我只安装了 8 GB 的 RAM。
如果内存使用量超过某个限制(我不太确定有多少,但建议这是所有可以使用的内存),则会引发 Stack Overflow 异常,如下图所示:
Prelude> foldl (+) 0 [1..5 * 10^7]
*** Exception: stack overflow
但是,当我的 RAM 总计为 8 GB 并且没有引发 Stack Overflow 异常时,程序怎么可能使用 > 16 GB 的内存?