【さんしょうとうかせい】
参照透過性 とは?
💡 同じ問いには必ず同じ答え。裏で何も変えない「律儀な自動販売機」のような性質
📌 このページのポイント
参照透過性って難しそうな名前だけど、どういう意味なの?
簡単に言うと「同じ入力なら必ず同じ結果を返す」性質のことだよ。自動販売機で例えると、100円を入れてボタンを押したら、いつ何回やっても同じジュースが出てくるイメージ。裏でこっそり在庫を変えたりもしないんだ。
普通の関数でもそうなんじゃないの?
実はそうでもないんだ。たとえば現在時刻を返す関数は、呼ぶたびに違う値が返るよね。グローバル変数を書き換える関数も、呼ぶ順番で結果が変わってしまう。こういう「副作用」があると参照透過性が崩れるんだよ。
参照透過だと何がうれしいの?
でも実際のアプリって、データベースに書き込んだりファイルを保存したりするよね?
モナドって聞いたことある!参照透過性と関係してたんだね!
まとめ:ざっくりこれだけ覚えればOK!
「参照透過性」って出てきたら「同じ入力なら絶対に同じ出力で、副作用もない性質」と思えればだいたいOK!
📖 おまけ:英語の意味
「Referential Transparency」 = 参照の透過性
💬 「referential(参照の)」+「transparency(透明さ)」で、式の中身が透明に見通せる=置き換えても問題ないという意味合いだよ