纯度与参考透明度
这些术语似乎有不同的定义,但我总是想到一个暗示另一个;当表达式是引用透明但不纯粹时,我无法想到任何情况,反之亦然。
维基百科为这些概念维护单独的文章并说:
从参考透明度:
如果涉及的所有功能
那么表达式就是纯函数
表达是指称的
透明。还有一些不纯的
功能可以包含在
表达式,如果它们的值是
丢弃和他们的副作用
微不足道。
来自纯粹的表达:
需要纯粹的功能
构建纯粹的表达。 [...]纯净
表达式通常被称为
被引用透明。
我发现这些陈述令人困惑。如果所谓的“不纯函数”的副作用不足以允许不执行它们(即用它的值替换对这样的函数的调用)而不会实质性地改变程序,那就像它在纯粹的程序中一样第一名,不是吗?
有没有更简单的方法来理解纯表达式和引用透明的表达式之间的差异(如果有的话)?如果存在差异,则可以理解清楚地表明它的示例表达。
没有找到相关结果
已邀请:
5 个回复
蕾跨立锌煤
贡炮逗握惫
的函数,然后生成一个随机数
,从自身中减去
并将其置于
,然后返回
。很明显,这个功能是不纯的,因为它产生随机数。但是,它是参考透明的。在这种情况下,这个例子很愚蠢和做作。但是,在例如Haskell中,
函数的类型为
而我的
函数的类型为
,表明它使用了副作用。当程序员可以通过外部证明保证他们的功能实际上是参考透明时,他们可以使用
将
从该类型中剥离。
墩瓣茅械
琶竞捆栓
脾萌