関数型プログラミングとは何ですか?C言語が関数型言語ではないのはなぜですか?
関数型言語には2つの主な特徴があります:1。関数は「ファーストクラスの市民」です。2.データの「不変性」。「
ロック」を回避する操作の「副作用なし」。
関数型プログラミングの機能は指数関数です。入力が与えられ、出力が固定され、副作用はありません。機能的なスタイルはどの言語でも使用できます
が、難易度は異なります。
たとえば、関数y = f(x)および関数t = g(z);数学では、tがf(x)の定義域にある場合、複合関数y = f(g(z)を形成できます。 ));2番目の質問では、なぜCは関数型言語ではないのですか?
この効果はCでは達成できないためです。
int f(int x) { print x;} ===== y = f(x) int f1(int (*g)(int)) { print g(z);} ===== y = f1(g(z)) int g(int z) {return z;} ========= t = g(z)
上記の関数定義から、関数f(x)のパラメーターがintとして定義されている場合、関数g(z)を正式なパラメーターとして渡すことができないことがわかります。
一方、関数f1()はintをパラメーターとして受け入れることができません。したがって、Cは数学関数のような効果を達成することはできません。
しかし、clojureではそうなります。
(defn f [x] (print x)) ======= y = f(x) (defn g [z] z) ======= t = g(z)
このとき、(f(g 3))と(f 3)の結果は同じであり、数学的な効果が得られます。
さらに、Cには関数型言語2の特性がありません。一般的な関数型言語は何ですか?
coljure、scala、Haskell。
python / javascripなどの言語は関数型言語の特性を持たないため、関数型言語ではないのはなぜですか2。
関数型プログラミングとは何ですか?C言語が関数型言語ではないのはなぜですか?
おすすめ
転載: blog.csdn.net/lx1848/article/details/77619881
ランキング