【さんしょうとうかせい】
参照透過性 とは?
最終更新:
💡 計算を答えに置き換えても、意味は同じ
式をその評価結果の値に置き換えても、プログラムの意味が変わらない性質。純粋な計算では、同じ入力に対して同じ結果が得られ、外部への変更や入出力に依存しない。
📌 このページのポイント
同じ入力なら、同じ答えってこと?
純粋な計算ではそうだよ。定義の中心は「式をその結果の値に置き換えても、プログラムの意味が変わらない」こと。たとえばadd(a,b)が外部を変更せず足し算だけをするなら、add(2,3) + 1を5 + 1に置き換えても結果は6のままなんだ。
いつも5を返せば、参照透過?
戻り値だけでは足りないよ。毎回ログを書いてから5を返す式を、値の5に置き換えるとログが消えるよね。プログラムの振る舞いが変わるので、そうした入出力や外部の変更も確認するんだ。
今の時刻を返す関数は?
どんなときに役立つの?
外部状態や呼び出し順に左右されにくいので、計算の結果を推論したりテストしたりしやすいよ。条件を満たす計算では、結果の再利用や並列化を考える助けにもなる。ただしアプリ全体の共有データや入出力まで、自動的に安全になるわけではないんだ。
ファイル保存も必要だよね?
まとめ:ざっくりこれだけ覚えればOK!
「参照透過性」って出てきたら「計算式をその答えに置き換えても、意味が変わらない性質」と思えばだいたいOK!
📖 おまけ:英語の意味
「Referential Transparency」 = 参照透過性
💬 ここでは、式を結果の値として扱ってもプログラムの意味が変わらないことに注目しよう。