加载中...

引用透明性(Referential Transparency)指程序中的一个表达式可以被它的求值结果直接替换,而不改变整个程序的可观察行为。若函数对相同输入总是返回相同输出且没有副作用,则对它的调用是引用透明的。
引用透明性来源于数学中函数的概念:函数只是输入到输出的映射,不依赖也不修改外部状态。纯函数式语言(如 Haskell)默认所有表达式引用透明,副作用需通过类型系统显式建模。
引用透明的代码支持等式推理,即像代数一样对程序做代换和化简,便于形式化证明。编译器也可据此安全地进行公共子表达式消除、惰性求值、并行化和结果缓存等优化。
真实程序离不开 I/O、随机数、时间等副作用,严格保持引用透明需要额外抽象(如 Monad)来封装效应,这也是纯函数式语言学习成本较高的原因之一。

登录 后参与讨论
暂无讨论,来发表第一条评论吧