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,但可在較長的列表)

(希望你的諷刺探測器是在....)