あなたの質問が「PythonでFPがどのように機能するかを示すいくつかの例を教えてください」である場合、次のようになります。
純粋関数型プログラミング(Python)とは何ですか?
これは、状態データと可変データを回避し、代わりに関数の戻り値に依存するプログラミングパラダイムです。これは、Pythonで記述された純粋に関数型のプログラムには、変数や状態などがないことを意味します。
それほど純粋ではないFP
FPと命令型パラダイムを組み合わせて、良好な結果を得ることができます(ここを参照)。リンクされた要点は、数か月前に受講したPythonクラス用に作成した数学クイズプログラムです。コードを自由に使ってください。
Java / C#のFP
私は個人的にC#の経験がないので、他の誰かがC#の例を投稿する必要がありますが、JavaでFPを使用することはできますが、純粋なFPを使用することはできません。例 :
int fib (int x) {
if (x < 2) return x;
return fib (x-1) + fib(x-2);
}
上記の方法は完全にFPですが、Javaを使用する場合は純粋なFPコンテキストでは使用できません。これはJavaのクラス内に配置する必要があり、そのタイプのオブジェクトをインスタンス化した後にC
のみ呼び出すことができます。この最後の部分では、JavaクラスがFPであることが失格になりますが、メソッドは引き続き失格になります。C
編集:実際には、インスタンス化せずに使用できる静的メソッドをJavaで使用できます。したがって、シグニチャをに変更したstatic int fib (int x)
場合、FP方式で呼び出された場合、メソッドとそのメソッド呼び出しは引き続きFPになる可能性があります。
Re:あなたのコメント
再帰はFPである可能性がありますが、そうである必要はありません(以下を参照)。
def f(first, rest):
print first
first = rest[0]; rest = rest[1:]
f(first, rest)
再帰なしでFPを使用することもできます:
def sum (a,b):
return a+b
def square(c):
return c*c
def square_of_sum (x,y):
return square(sum(x,y))