C# で高次リスト操作の名前を変更した理由は何ですか? (例: map
-> Select
、filter
-> Where
、fold
-> Aggregate
)
4 に答える
LINQ は、プロジェクションが選択されている場合など、SQL を知っている人々に大まかに慣れるように努めています。もちろん、適切な名前で独自の拡張メソッドを作成することもできます。
メタクエスチョンについて・・・
関数型プログラミング コミュニティと主流の命令型プログラミング コミュニティは、長い間互いにほぼ孤立して発展してきました。その結果、根本的な語彙の違いがあります。たとえば、「ポリモーフィズム」のような一般的な用語は、各グループにとって完全に異なるものを意味します (パラメトリック ポリモーフィズム、別名「ジェネリック」または「テンプレート」は FP-er に対して、サブタイプ ポリモーフィズムは残りの部分に対して)。
名前の背後にある理論的根拠を尋ねると(もしあれば)、多くの場合、1 つの単純な答えが返ってきます。つまり、「ローカル カルチャー」に従って名前を付けます。C# では、LINQ は SQL のようなクエリ言語であるため、SQL によく似ています。
しかし、この質問をすることは、スペインに行って、誰もが自分の家を「ミ カーサ」と呼んでいる理由を尋ねることに似ています。(「なぜ私がそれをそう呼ぶのですか? それはそれが呼ばれるものです! あなたはそれを別のものと呼んでいるということですか?」)
答えではありませんが、脇に置いておきます。
LINQ (C#/など) と F#関数の間の「デコーダ リング」変換については、http://blogs.msdn.com/b/jaredpar/archive/2008/12/02/mapping-linq-to-f.aspxを参照してください。 (主に、より伝統的な機能名に従います)。Enumerable
Seq
まあ、IMO、「折り畳み」は「集約」のかなりひどい名前です。おかしな数学の人々。:) ほとんどの場合、C# の名前は SQL/LINQ とより一致しています。