gpt4 book ai didi

haskell - 为什么这会打败 Haskell 的懒惰评估?

转载 作者:行者123 更新时间:2023-12-01 10:06:30 25 4
gpt4 key购买 nike

今天我正在用 Haskell 编写一个小程序。我发现在 ghci 的交互模式下,这个:

take 100 $ foldl (\s a -> s ++ [last s + a]) [0] (1:[6,12..])

会挂起 ghci 并使其因内存不足而崩溃,但是:

take 100 $ foldl (\s a -> s ++ [last s + a]) [0] (1:[6,12..606])

可以正常运行。

为什么 Haskell 的惰性计算不能让第一个在内存(3G,BTW)内运行?或者这可能是 ghci 的怪癖?

感谢您的任何意见!

最佳答案

我认为你的问题是这样的:

foldl 在无限列表方面存在一些问题(参见 HaskelWiki: Fold )

但是如果你尝试使用foldr last s 就会有问题。不知道这是否是一项作业,但我想你想自己找到解决方案,所以这里有一个提示:不要折叠,而是寻找展开 - 这里是 example with the fibonaccis

关于haskell - 为什么这会打败 Haskell 的懒惰评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com