この質問(および回答)にとって本当に重要なことの1つは次のとおりです。関数型プログラミングとは一体何であり、最も重要な特性は何ですか。私はそれについて私の見解を与えようとします:
関数型プログラミングは、ホワイトボードに数学を書くのとよく似ています。ホワイトボードに方程式を書くとき、実行順序については考えません。(通常)突然変異はありません。翌日に戻ってそれを見ていないので、もう一度計算すると、異なる結果が得られます(または、新鮮なコーヒーを飲んでいた場合は、そうなる可能性があります)。基本的に、ボード上にあるものはそこにあり、あなたが物事を書き始めたときの答えはすでにそこにありました、あなたはそれがまだ何であるかをまだ理解していません。
関数型プログラミングはそのようなものです。物事を変更するのではなく、方程式(この場合は「プログラム」)を評価して、答えが何であるかを理解します。プログラムは変更されずにまだ残っています。データについても同様です。
私は以下を関数型プログラミングの最も重要な機能としてランク付けします。b)副作用なし-ホワイトボードをどれだけ長く見ていても、別の人が別のホワイトボードを見ている方程式が誤って変更されることはありません。c)関数も値です。これは、他の変数とともに渡したり、他の変数に適用したりできます。d)関数構成。h= g・fを実行して、g(f(..))を呼び出すことと同等の新しい関数h(..)を定義できます。
このリストは優先順位が高いので、参照の透明性が最も重要であり、副作用はありません。
さて、Pythonを使用して、言語とライブラリがこれらの側面をどれだけ適切にサポートし、保証しているのかを確認すると、自分の質問に答える準備が整っています。