在Javascript中,有reduce函数,它接受函数和数组,在数组上映射并返回函数返回的任何内容。
例如:
[1, 2, 3].reduce(function(acc, x) {
acc += x
return acc;
}, 0); // 6
Haskell中有折页,对我来说也一样:
foldl (+) 0 [1,2,3] -> 6
如果我想将这种函数创建为库,可以安全地将其折叠而不是reduce,并且两者之间没有任何区别。
除了名称之外,两个功能是否相同
我演示使用不同的语言,因为Js没有foldl功能。
谢谢
答案 0 :(得分:2)
命名不一致,并且取决于语言。
在类似Kotlin的某些情况下,reduce
不会采用初始值,但是fold
会采用初始值。在Haskell中,有foldl
和foldl1
来区分这两种。在Clojure中,相同的函数reduce
对于采用初始值或不采用初始值具有不同的重载。
他们基本上是在描述相同的概念,而且我从未发现两个名称之间有任何明显的区别。