引用透明性 在计算机科学中引用透明性和引用不透明性是部分计算机程序具有的属性若一个表达式在被其相应的值替换时能不改变程序的行为反之亦然则该表达式是引用透明的 因此该表达式必须是纯函数给予相同的输入其返回值必须相同对其求值时不能含有副作用反之一个不具有应用透明性的表达式是引用不透明的 在数学中根据构成数学函数的定义所有函数应用都是引用透明的然而在编程中情况并非总是如此为避免歧义函数经常被归类为过程或方法函数式编程的一个定义特征是它只允许引用透明的函数一些其他编程语言有提供方法用以选择地保证引用透明性一些函数式编程语言要求所有函数必须引用透明 引用透明性的重要性在于允许程序员和编译器将程序行为作为重写逻辑进行推理这有助于证明正确性简化算法在不破坏代码的情况下协助修改代码以及通过记忆公共子表达式消除惰性求值或并行计算来优化代码