Referential transparency and
referential opacity are properties of parts of
computer programs. An
expression is said to be referentially transparent if it can be
replaced with its
value without changing the behavior of a program (in other words, yielding a program that has the same effects and output on the same input). The opposite term is referential opacity.