0

为什么累加器AccIn不是左参数Funhttp://erlang.org/doc/man/lists.html#foldl-3

foldl(Fun, Acc0, List) -> Acc1


Fun = fun((Elem :: T, AccIn) -> AccOut)
Acc0 = Acc1 = AccIn = AccOut = term()
List = [T]
T = term()

我问这个是因为几乎所有其他函数式语言(例如haskell, scala)都反过来。您的意思是将左折叠可视化为从左侧累积

foldl f z [x1, x2, ..] = ((z f x1) f x2) ..

4

2 回答 2

0

不同版本的折叠之间的参数顺序的一致性被简单地认为比您提到的任何此类代数可视化更重要。

于 2017-08-12T20:50:25.067 回答
0

它与 Haskell 中的相同:

foldl(Fun, Acc0, List) -> Acc1

foldl :: (a -> b -> a) -> a -> [b] -> a

于 2017-08-10T11:35:11.797 回答