あまり。まず、関数型プログラミングの意味にはいくつかの異なる定義があり、コミュニティによって異なります。Haskellersは、通常、Schemersとは少し異なる考え方を持っています。
厳密に言えば、関数型プログラミングは関数をプリミティブとして使用するため、プロセスで評価されることなく、関数を変数に入れて引数として渡すことができます。
Haskellersは通常、純度要件に取り組みます。機能の純粋さは、機能に副作用(状態の変化を含む)があってはならないという考えです。つまり、同じ引数を使用して関数を呼び出すたびに、同じ値を返す必要があります。
2番目の関数は、必要な最初の条件で失敗します。あなたは第一級市民として機能を使用していません。
このように書くと、
func1(int a) {
return (
if (a==100)
then func(0);
else func2(a);
)
}
これは現在純粋ですが、特に機能的でも、特に必須でもありません。
コンテキストが少なすぎるため、あなたの例を特に機能的なものに変換することはできません。関数型コードの通常の「HelloWorld」は次のとおりです。
square(x) = x * x
twice(f, x) = f(f(x))
twice(square, 4)
=> 256
ここではsquare
、数値をそれ自体で乗算する関数を定義します。twice
関数と引数を取り、その関数を引数に2回適用する別の関数を定義します。次に、関数twice
に引数square
とを与えます4
。これはそうではないことに注意してくださいtwice(square(4))
-関数square
は、関数の定義内になるまで評価されませんtwice
。