【じゅんすいかんすう】
純粋関数 とは?
💡 同じ材料なら必ず同じ料理が出てくる「正直な自動販売機」
📌 このページのポイント
純粋じゃない関数ってどんなもの?
たとえば関数の中でグローバル変数を変更したり、Math.random() で毎回違う値を返したり、APIにデータを送信したりする関数。これらは「同じ入力でも結果が変わる」か「外部に影響を与える」ので純粋ではない。
全部純粋関数にすればいいんじゃないの?
Reactと純粋関数ってどう関係あるの?
純粋関数だとテストが簡単って本当?
関数型プログラミングって全部純粋関数で書くの?
Haskellのような純粋関数型言語ではそれに近いことをするよ。副作用はモナドという特殊な仕組みで隔離するんだ。ただし現実のアプリ開発では100%純粋にするのは難しいから、「できるだけ純粋に書いて、副作用は端に追いやる」というアプローチが実用的。関数型プログラミングの知見は命令型言語でも大いに役立つよ。
まとめ:ざっくりこれだけ覚えればOK!
純粋関数って出てきたら「同じ入力なら必ず同じ出力で、外に影響しない関数」と思えばだいたいOK!
📖 おまけ:英語の意味
「pure function」 = 純粋な関数
💬 pure は「混じり気のない」という意味で、副作用という「不純物」がない関数のこと