Erlang:Foldl函数参数交换

时间:2017-08-05 06:30:19

标签: erlang foldleft

为什么累加器AccIn不是Fun的左参数? http://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()

我问这个是因为几乎所有其他功能语言(例如haskellscala)都反过来了。您的意思是将左侧折叠可视化为从左侧累积

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

2 个答案:

答案 0 :(得分:0)

与Haskell相同:

  

foldl(Fun,Acc0,List) - > ACC1

     

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

答案 1 :(得分:0)

不同版本的折叠之间的参数顺序的一致性被认为比你提到的任何这样的代数可视化更重要。