这两个术语看起来确实是不同的 定义,但我总是认为一个意味着另一个; 我想不出任何表达式是引用透明但不纯粹的情况,反之亦然。
维基百科为这些概念保留了单独的文章,并表示:
来自 参照透明度 (计算机科学):
中涉及的所有函数 表达式是纯函数 表达式是参照的 透明的。还有一些不纯净的 函数可以包括在 如果它们的值是 及其副作用 微不足道。
来自 纯粹的表情:
纯函数需要 构造纯粹的表达[ ... ]纯粹 表达式通常被称为 具有参照透明度。
我觉得这些陈述令人困惑。如果一个所谓的“不纯函数”的副作用是 微不足道,足以允许不执行它们(即用它的 价值替换对这样一个函数的调用)而不实质性地改变程序,这就好像它从一开始就是纯的一样,不是吗?
是否有更简单的方法来理解纯表达式和引用透明表达式(如果有的话)之间的区别?如果有区别的话,一个清楚地表明它的例子表达式会很受欢迎。