纯函数式语言中的全局变量

Jim*_*all 4 programming-languages functional-programming

如果允许全局变量,纯函数式语言是否会失去其纯度?我的意思是全局变量是否会影响语言的引用透明度

我想不是,因为价值语义,但我不确定,并想知道其他人的想法.

Tom*_*ett 5

在纯函数式语言中,"变量"意味着与命令式语言中通常意义不同的东西.它在可以在给定范围内重新分配的意义上是不变的,而是在每次进入范围时,它可能具有不同的值.但是对于该范围的生命周期,它保持不变.例如,在函数中

f x y = x + y
Run Code Online (Sandbox Code Playgroud)

x并且是应用于它们y时变为绑定的变量f.一旦绑定,它们永远不会在该调用的范围内发生变化,它们在某些时候就会超出范围.其他的调用将绑定x,并y为不同的值.这就是功能变量"变化"的意义,它与变量的原始数学意义更接近(有些人可能会说相同).

那么,对于你的问题:全局变量是否毁了纯度?不,因为全局变量,因为它们永远不会超出范围,所以它们实际上是常数.