働く男性のためのコンビネーターの説明
コンビネーターとは何ですか? それは(SOで定義されている)「自由変数のない関数または定義」ですか? または、これについてはどうでしょうか。JohnHughesによる、Arrowsに関する彼の有名な論文によると、「コンビネータはプログラムフラグメントからプログラムフラグメントを構築する関数です」。これは、「...手ですべての詳細を書き込むのではなく、自動的にプログラムします。」彼はさらに続けて、そのようなコンビネーターの2つの一般的な例であるmapと言いfilterます。 最初の定義に一致するいくつかのコンビネーター: S K Y To Mock a Mockingbirdの他の人(私は間違っているかもしれません-私はこの本を読んだことがありません) 2番目の定義に一致するいくつかのコンビネーター: 地図 フィルタ フォールド/リデュース(おそらく) >> =、作成、fmapのいずれか????? 私は最初の定義には興味がありません-それらは私が実際のプログラムを書くのを助けにはしません(あなたが私に間違っていると納得させれば+1)。 2番目の定義を理解してください。map、filter、reduceは便利だと思います。これらを使用すると、より高いレベルでプログラムを作成できます。ミスが少なく、コードが短くて明確になります。コンビネーターに関する私の特定の質問のいくつかはここにあります: マップ、フィルターなどのコンビネーターの他の例は何ですか? プログラミング言語はどのコンビネーターによく実装されていますか? コンビネーターは、より良いAPIを設計するのにどのように役立ちますか? 効果的なコンビネーターを設計するにはどうすればよいですか? 非関数型言語(Javaなど)と似ているコンビネーターとは何ですか、またはこれらの言語はコンビネーターの代わりに何を使用していますか? 更新 @CA McCannのおかげで、コンビネータについて多少理解が深まりました。しかし、1つの質問はまだ私にとって問題です。 コンビネーターを多用して書かれた関数型プログラムと書かれていない関数型プログラムの違いは何ですか? 答えは、combinator-heavyバージョンのほうが短く、明確で、より一般的だと思いますが、可能であれば、より詳細な議論をお願いします。 またfold、一般的なプログラミング言語での複雑なコンビネーターの例や説明(つまり、より複雑)も探しています。