【じゅんすいかんすう】
純粋関数 とは?
最終更新:
💡 同じ材料から同じ結果を返す、計算の担当
同じ入力なら同じ結果を返し、入力や外部の状態を変更しない関数。計算を外部とのやり取りから分けることで、動きを理解し、入出力を検証しやすくできます。
📌 このページのポイント
- 同じ入力なら、同じ結果を返す
- 入力や外部の状態を変更する副作用を持たない
- 時刻や乱数が必要なら、値を入力として渡す方法がある
- 外部とのやり取りと計算を分けると検証しやすい
どんな関数が純粋なの?
例えば数を受け取って2倍を返す関数。同じ数なら同じ結果で、元の値や外の変数も変更しないね。対して、内部で現在時刻や乱数を読み結果を変える関数は、同じ引数でも結果が決まらないよ。
計算の途中で変数を使ったら、もう副作用?
全部、純粋関数にすればいい?
ファイルへの保存や通信など、外の状態を変える仕事も必要だよ。計算の部分と外部とのやり取りを分けると、計算は入出力で試しやすくなる。ただし純粋でも、計算式が間違えば結果も間違う。必要なケースはきちんと検証しよう。
Reactでも使う考え方なの?
まとめ:ざっくりこれだけ覚えればOK!
「純粋関数」って出てきたら「同じ入力なら同じ結果で、外の状態を変えない関数」と思えばだいたいOK!
📖 おまけ:英語の意味
「Pure Function」 = 純粋な関数
💬 計算結果が入力で決まり、呼び出し前から存在する状態を変更しない関数を表します。「よい関数は全部純粋」という優劣の呼び名ではありません。