参考透明度是什么意思?我曾听人描述它为“这意味着你可以用等号替换等号”,但这似乎是一个不充分的解释。
当前回答
编程中的引用透明性指的是,当一个函数提供了一个输入时,它总是会为给定的输入返回相同的值。以下面的示例函数为例。
Int plusFive(int x){
return x+5
}
对于给定的输入整数x,该函数总是返回相同的值。上述函数的输出可以被其返回值所替代,并且代码的操作应该相同。例如,如果x=10,那么代码可以写成:
Int输出= + 5 (10)
OR
Int输出= 15
其他回答
引用透明函数的作用类似于数学函数;给定相同的输入,它总是会产生相同的输出。它意味着传入的状态没有被修改,并且函数本身没有状态。
引用透明性可以简单地表述为:
一个表达式在任何上下文中总是求相同的结果[1], 一个函数,如果给定相同的参数两次,必须产生相同的结果两次。
例如,编程语言Haskell是一种纯函数式语言;这意味着它是引用透明的。
一个表达式是引用透明的,如果它可以用它的值替换,而不改变算法,产生的算法在相同的输入上具有相同的效果和输出。
当我读到被接受的答案时,我以为我在不同的页面上,而不是在stackoverflow上。
引用透明性是定义纯函数的一种更正式的方式。因此,如果一个函数在相同的输入上始终产生相同的结果,那么它就是引用透明的。
let counter=0
function count(){
return counter++
}
这不是引用透明的,因为返回值取决于外部变量“counter”,并且它一直在变化。
这是我们如何使它的参考透明:
function count(counter){
return counter+1
}
现在这个函数是稳定的,并且在提供相同的输入时总是返回相同的输出。
表示性语义是建立在建模语言的基础上,通过构建域来构成可表示性值。 函数式程序员使用术语值来描述基于语言重写规则的计算的收敛性。它的操作语义。
在1中,有两种语言的清晰度:
被建模的那个,目标语言 建模的语言,元语言
2、由于对象和元语言的紧密性,它们可能会被混淆。
作为一名语言实现者,我发现我需要经常记住这个区别。
所以Reddy教授,我可以这样解释你吗?
在函数式编程和语义的上下文中,术语引用 透明度不是指的透明。
推荐文章
- 我如何用groupBy计算发生的事件?
- foreach和map有区别吗?
- 在函数式编程中,什么是函子?
- PHP中接口的意义是什么?
- 面向对象编程,函数式编程,过程式编程
- 什么是“P=NP?”,为什么这是一个如此著名的问题?
- 为什么不可变性在JavaScript中如此重要(或需要)?
- 如何使用underscore.js作为模板引擎?
- Scala中的“提升”是什么?
- Javascript相当于Python的zip函数
- 使用array_map()访问第一级键,而不调用' array_keys() '
- functools partial是怎么做的呢?
- 过程式编程和函数式编程的区别是什么?
- 没有可变状态,你怎么能做任何有用的事情?
- 如何在Python中使用lambda排序