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