9

通常称为reduce的高阶函数在各种语言中都有许多同义词。reduce的同义词的完整列表

把我的头,我能想到的顶部:

  • foldrfoldl(又名右折和左折)(哈斯克尔)
  • inject(Smalltalk中,红宝石,Groovy中)
  • Aggregate (LINQ)
  • accumulateWikipedia
  • compressWikipedia

是否有这个函数所有不同名称的完整列表?如果没有,让我们在这里做一个。知道这一点很有用。

我对从每种语言获取库函数名称不太感兴趣,我正在寻找更多的口语,“它是如何用在一个句子中”的类型引用。

回答

5

好了,到目前为止总榜单似乎是:

  • catamorphism(总称,see Kristopher's post
  • reduce(Python中的Clojure,Common Lisp的,红宝石)
  • reduction( APL)
  • foldrfoldl(ak右倍和左折叠)(Haskell中,计划)
  • inject(Smalltalk中,红宝石,Groovy的)
  • #inject:into(Smalltalk中)
  • Aggregate(LINQ)
  • accumulateWikipedia
  • compressWikipedia
  • insertion(FP)
  • Insert(J)

感谢大家的帮助,如果稍后有更好的清单出现,我会确保接受该清单!

+0

APL的Reduce(/)更名为Insert in J(http://www.jsoftware.com/help/dictionary/d420.htm)。所述重命名的一个诱因是Insert可以产生不涉及减少的结果。有关此运算符历史记录的一些注释发生在“APL的个人视图”(http://www.jsoftware.com/papers/APLPersonalView.htm) – kaleidic

+0

谢谢!我会把它放进去 –

2

一对夫妇更:

  • foldr, foldl(计划)
  • reduce(Python中的Clojure,Common Lisp的)
  • #inject:into:(Smalltalk的)
5

从“A tutorial on the universality and expressiveness of fold”:

折叠操作者有其递归论(克莱尼,1952年), 起源而在编程语言采用倍作为核心概念 可以追溯到减少 APL(艾弗森,1962)的运营商和后来的 到插入 FP的运营商(Backus, 1978)。

+0

优秀,看起来像“减少”确实是原来的术语。 –

2

斯卡拉称它们为foldLeftfoldRight。它们也用符号/::\表示。

有些变种不需要种子。它们被称为reduceLeftreduceRight。这些reduce*又有不会在空序列上抛出错误的变体。他们被称为reduceLeftOptionreduceRightOption

有各种各样的方向遍历不重要的方向。他们被称为foldreduce;先拿种子,其次不要。

我可以把它放在一张漂亮的桌子上。可惜stackoverflow不会允许。

0

另外一个

  • 与foldl”(Haskell中,像与foldl,但可在较长的列表)

(希望你的讽刺探测器是在....)