为什么在javascript中采用名称`reduce`而不是`fold`?

时间:2018-02-24 14:04:35

标签: javascript reduce

我搜索了这个主题,但我不知道要搜索哪个关键字,所以我发布了这个问题。

我想知道为什么名称reduce在javascript中被选中,即使名称已被使用,例如foldaccumulate,这是更传统和有意义的(这是我个人的)观点)。

我和亲近的人谈过这个话题(我认识的一个人长期以来一直在处理Javascript,并且还使用过Scheme,Racket和Clojure等函数式语言) 。他小心翼翼地推测这可能是Python的影响。

如果你有任何我不知道的传统背景,或者你知道这个名字背景的人,我将非常感激你能回答。

1 个答案:

答案 0 :(得分:1)

如果查看https://en.wikipedia.org/wiki/Fold_(higher-order_function)#Folds_in_various_languages,您会发现此操作的最常见名称是foldreduceinjectreduce绝不是一个不寻常的名字。特别是,reduce用于Perl(JavaScript从中复制了许多功能),而Perl可能是从Lisp获得的(与许多其他功能一样)。我能找到的最早的参考文献是REDUCE in Common Lisp(它是在20世纪80年代发展起来的,并于1994年标准化)。