リストまたは配列を操作するためのいくつかの高階関数が繰り返し採用または再発明されました。関数map、fold [ l | r ]とfilterは、Scheme、ML、Pythonなど、共通の祖先を持たないように見えるいくつかのプログラミング言語で一緒に見つかります。質問を集中させるために、これら3つの名前を使用します。
名前が普遍的ではないことを示すために、他の言語での同等の機能の名前のサンプルを以下に示します。C ++はい変換するのではなく、マップやremove_ifの代わりに、フィルタ(述語の意味を反転させます)。Lispは持っているでmapcarの代わりに、マップを、削除-IF-ない代わりに、フィルタ、および軽減の代わり倍(一部現代のLispが持っているバリアントマップが、これが表示されますがために派生形。)C#の用途は選択の代わりにマップし、どこの代わりに、フィルター。C#の名前はLINQを介してSQLに由来し、名前の変更にもかかわらず、それらの機能はMLの影響を受けたHaskellの影響を受けました。
map、fold、およびfilterという名前は広く普及していますが、普遍的ではありません。これは、彼らが有力な情報源から他の現代の言語に借用されたことを示唆しています。これらの関数名はどこから来たのですか?
mapcar
は(cdrではなく)車上のマップです。
filter
まさにそれを行います-それはデータをフィルタリングします。かなり明白なようです。
map
は、入力ドメインから出力範囲への「マッピング」としてセット変換を説明する数学的セット理論に由来します。