9

一般的に知られている高階関数にはreduce、さまざまな言語で多くの同義語があります。

私の頭のてっぺんから私は考えることができます:

この関数が持つすべての異なる名前の包括的なリストはありますか?そうでない場合は、ここで作成しましょう。知っておくと便利です。

各言語からライブラリ関数名を取得することにあまり興味はありません。口語的な「文でどのように使用されるか」というタイプの参照を探しています。

4

6 に答える 6

7

一般に、この概念はカタモルフィズムとして知られていることに気付くかもしれません。 ウィキペディアから、またはかわいい記事バナナ、レンズ、封筒、有刺鉄線を使った関数型プログラミングから

于 2012-06-04T02:17:57.477 に答える
6

さて、これまでのところ、全体のリストは次のようです。

みんなの助けに感謝します、そして誰かが後でより良いリストを持ってきたら、代わりにそれを受け入れるようにします!

于 2012-06-06T18:12:13.750 に答える
5

褶曲の普遍性と表現力に関するチュートリアル」から:

フォールド演算子は再帰理論(Kleene、1952)に起源がありますが、プログラミング言語の中心的な概念としてのフォールドの使用は、APLの縮小演算子(Iverson、1962)にまでさかのぼり、後にFPの挿入演算子にまでさかのぼります。 (Backus、1978)。

于 2012-06-04T12:38:22.843 に答える
2

さらにいくつか:

  • foldr, foldl(図式)
  • reduce(Python、Clojure、Common Lisp)
  • #inject:into:(Smalltalk)
于 2012-06-04T02:12:26.720 に答える
2

ScalaはそれらfoldLeftをと呼びますfoldRight/:それらは記号とで表されます:\

シードをとらないこれらのバリエーションがあります。それらはととして知られreduceLeftていreduceRightます。reduce*空のシーケンスでエラーをスローしないこれらのバリエーションもあります。彼らは呼ばれreduceLeftOptionていreduceRightOptionます。

トラバースの方向がどちらの方法でも重要ではないバリエーションがあります。それらは呼ばれfoldreduce; 最初はシードを取得し、2番目はシードを取得しません。

私はこれを素敵なテーブルに置くことができたでしょう。残念なstackoverflowはそれを許可しません。

于 2012-06-09T09:59:19.657 に答える
0

もう1つ

  • foldl'(Haskell、foldlに似ていますが、より長いリストで動作します)

(皮肉な検出器がオンになっていることを願っています....)

于 2013-03-14T14:16:36.443 に答える