私はこの記事を読んでいます: http://en.wikipedia.org/wiki/Function_pointerとちょっと混乱しています。C/C++ は関数ポインタをサポートしているということは、関数型プログラミング全般をサポートしているということではないでしょうか? 関数型プログラミングに C や C++ を実際に使用したくないことに注意してください。ただし、C や C++ がそのようなことをサポートしているとは聞いたことがないので、興味があります。(多くの関数型プログラミング言語のコンパイラが C に存在することは知っていますが、それは私が「サポート」と呼んでいるものではありません)。
7812 次
3 に答える
9
編集:なぜこの答えがそれほど嫌われているのかわかりません。この質問は、関数ポインタについて具体的に尋ね、その存在が C++ が「一般的な関数型プログラミング」をサポートしていることを意味するかどうかを尋ねます。
一種の技術的で、あまり有用ではない方法で: はい*。「関数型」プログラミングの本質は、関数が値であるということです。C と C++ は、レキシカル クロージャの簡単な作成と破棄のような点では何の助けにもなりませんし、部分的な適用に関しても何の恩恵も与えません。関数ポインターを使用して、値のような振る舞いをする関数の外観をシミュレートできるという事実は、実際には同等の表現言語の結果です。これを「関数型プログラミング」と混同しようとすると、チューリングのターピットに深く入り込んでしまいます。
*本当に技術的な違いとして、C と C++ には実際には関数型の値がありません。関数ポインターは、目を細めて見ると似ているように見えますが、関数値とは異なります。
于 2013-06-03T23:42:07.057 に答える
4
C++ で関数型プログラミングを行うことはできますが、言語は正確には役に立ちません。可能な限り不変の値を単純に使用する一次関数型プログラミングは、確かに十分に簡単であり、正確に簡単ではありませんが、実際にモナドを実装できます!
于 2013-06-05T04:31:35.937 に答える