gpt4 book ai didi

haskell - 为什么 Haskell 标准库中没有 scanl' 函数?

转载 作者:行者123 更新时间:2023-12-04 01:49:11 25 4
gpt4 key购买 nike

foldl 功能自带严格模拟 foldl' . scanl 有什么原因吗?不需要scanl'替代方案还是他们根本没有将其包含在标准库中?

最佳答案

没有必要。 foldl' 的严格性允许它在遍历其输入列表时立即消除 thunk。

foldl' (+) 0 [1,2,3]           foldl (+)    0                [1,2,3]
foldl' (+) 1 [2,3] foldl (+) (0 + 1) [2,3]
foldl' (+) 3 [3] foldl (+) ((0 + 1) + 2) [3]
foldl' (+) 6 [] foldl (+) (((0 + 1) + 2) + 3) []
6 (((0 + 1) + 2) + 3)
((1 + 2) + 3)
(3 + 3)
6

但是当你这样做 scanl它会生成一个包含每个步骤的列表
scanl (+) 0 [1,2,3]
[ 0
, 0 + 1
, (0 + 1) + 2
, ((0 + 1) + 2) + 3
]

您必须遍历整个列表才能看到最终结果,这可以让您控制如何强制执行 thunk。这将评估的控制权推给了列表的消费者。

关于haskell - 为什么 Haskell 标准库中没有 scanl' 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20135355/

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