【发布时间】:2020-03-08 17:53:05
【问题描述】:
我想知道为什么 F# 允许阴影,尤其是在同一范围内。
我一直认为纯函数式编程结构中的值绑定类似于代数/数学中的赋值。
例如,
y = x + 1
将是一个有效的数学表达式,但
y = y + 1
不会。
但是,因为有阴影,
let y = y + 1
在 F# 中是一个完全有效的表达式。
为什么语言允许这样做?
【问题讨论】:
-
y = y + 1不是一个有效的代数表达式,但在这里它类似于y' = y + 1。原来的y因为阴影而无法访问。它实际上并没有改变y,而是重用绑定的名称。 -
有趣的问题,但由于它是一个概念性的讨论问题,因此对于 cs.stackexchange.com 来说似乎更切题,而不是针对特定编程问题的 SO。
标签: math f# algebra purely-functional shadowing