参照透過性
式をその値に置き換えても、プログラムの振る舞いが変わらない性質。add(2,3)はいつでも5に置き換えられる。関数型プログラミングとコンパイラ最適化の土台。
成立には純粋関数(副作用がなく、入力が同じなら出力も同じ)が必要で、グローバル状態の変更、I/O、乱数、現在時刻があると崩れる。利点は、置換モデルで簡単に推論できること、メモ化が安全にできること、コンパイラが並べ替えやインライン化を積極的に行えること、共有状態がないので並列化が容易なことだ。HaskellはIOモナドで副作用を隔離し、参照透過性を言語として強制する。現代ではReactのコンポーネントも、同じpropsなら同じ描画結果という意味で参照透過であるべきとされ、メモ化や並行レンダリングの前提になっている。逆に、変更を伴う命令型のコードは参照透過ではない。