foldl/foldr 不要打stackoverflow

foldl/foldr don't hit stackoverflow

我正在阅读这篇文章 https://wiki.haskell.org/Foldr_Foldl_Foldl%27,但是当我尝试复制诸如

之类的代码时
foldl k = go
    where
        go z [] = z
        go z (x:xs) = let z' = k z x
            in foldl k z' xs

sum2 = foldl (+) 0
try2 = sum2 [1..10000000]

我的笔记本电脑挂了一会儿并对其进行了评估,而不是 return 预期的 Whosebug。

即使我尝试 foldr (+) 0 [1..1000000],我也无法获得 Whosebug,除非我增加列表的大小。

文章撰写后有什么变化吗?有什么想法吗?

我正在使用 :l folds.hs、运行 stack ghci 加载文件。我尝试了以下方法来减少我的堆栈大小,但可能是不正确的方法。

stack ghci +RTS -K2M -RTS

堆栈限制已默认增加到 80% of physical memory。要使用 stack 设置选项,请使用 stack ghci --ghci-options="+RTS -K2M"。我确实在 GHC 8.8.4 上以这种方式得到了溢出。