関数型プログラミングとは何ですか?C言語が関数型言語ではないのはなぜですか?

  • 関数型プログラミングとは何ですか?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。

おすすめ

転載: blog.csdn.net/lx1848/article/details/77619881