javascript折叠减少功能编程

时间:2018-06-24 13:01:11

标签: functional-programming

在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功能。

谢谢

1 个答案:

答案 0 :(得分:2)

命名不一致,并且取决于语言。

在类似Kotlin的某些情况下,reduce不会采用初始值,但是fold会采用初始值。在Haskell中,有foldlfoldl1来区分这两种。在Clojure中,相同的函数reduce对于采用初始值或不采用初始值具有不同的重载。

他们基本上是在描述相同的概念,而且我从未发现两个名称之间有任何明显的区别。