gpt4 book ai didi

带 (++) 的 haskell 折叠

转载 作者:行者123 更新时间:2023-12-03 23:15:26 26 4
gpt4 key购买 nike

当我发现这真的让我很困扰时,我正在玩 Haskell 和 ghci:

foldl (++) [[3,4,5], [2,3,4], [2,1,1]] []

我希望得到这个: [3,4,5,2,3,4,2,1,1]然而它得到:
[[3,4,5],[2,3,4],[2,1,1]]

据我了解foldl,应该是这样的:
(([] ++ [3, 4, 5]) ++ [2, 3, 4]) ++ [2, 1, 1]

如果我在 ghci 中输入它,它确实是 [3,4,5,2,3,4,2,1,1] .

另一个奇怪的事情是:
Prelude> foldl1 (++) [[3,4,5], [2, 3, 4], [2, 1, 1]]
[3,4,5,2,3,4,2,1,1]

我希望 foldl 和 foldl1 的行为方式相同。那么 foldl 实际上是做什么的呢?

最佳答案

论据的顺序是错误的。正确的是:foldl (++) [] [[3,4,5], [2,3,4], [2,1,1]](也就是说,首先是累加器,然后是列表。)

关于带 (++) 的 haskell 折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5129035/

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