参照透過性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/12/27 03:47 UTC 版)
参照透過性(さんしょうとうかせい、英: Referential transparency)は、計算機言語の概念の一種である。ある式が参照透過であるとは、その式をその式の値に置き換えてもプログラムの振る舞いが変わらない(言い換えれば、同じ入力に対して同じ作用と同じ出力とを持つプログラムになる)ことを言う。具体的には変数の値は最初に定義した値と常に同じであり、関数は同じ変数を引数として与えられれば同じ値を返すということになる。当然変数に値を割り当てなおす演算である代入 (Assignment) を行う式は存在しない。このように参照透過性が成り立っている場合、ある式の値、例えば関数値、変数値についてどこに記憶されている値を参照しているかということは考慮する必要がない、即ち参照について透過的であるといえる。
- 1 参照透過性とは
- 2 参照透過性の概要
- 3 関連事項
参照透過性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/01/06 04:20 UTC 版)
「関数型プログラミング」の記事における「参照透過性」の解説
詳細は「参照透過性」を参照 参照透過性とは、数学的な関数と同じように同じ値を返す式を与えたら必ず同じ値を返すような性質である。次の square 関数は、 2 となるような式を与えれば必ず 4 を返し、 3 となるような式を与えれば必ず 9 を返し、いかなる状況でも別の値を返すということはなく、これが参照透過性を持つ関数の一例となる。 def square(n): return n ** 2 次の countup 関数は、同じ 1 を渡しても、それまでに countup 関数がどのような引数で呼ばれていたかによって、返り値が 1, 2, 3, ... と変化するため、引数の値だけで結果の値が定まらないような参照透過性のない関数であり、数学的な関数とはいえない。 counter = 0def countup(n): global counter counter += n return counter 参照透過性を持つことは、その関数が状態を持たないことを保証する。状態を持たない数学的な関数は、並列処理を実現するのに適している。関数型プログラミング言語の内で、全ての関数が参照透過性を持つようなものを純粋関数型プログラミング言語という。
※この「参照透過性」の解説は、「関数型プログラミング」の解説の一部です。
「参照透過性」を含む「関数型プログラミング」の記事については、「関数型プログラミング」の概要を参照ください。
- 参照透過性のページへのリンク