我对 f# 中变量的肤浅理解表明,将变量声明为“可变”和使用“ref”变量基本上都做同样的事情。它们都是解决相同潜在问题的不同方法 - 在功能语言中有限且结构化地允许可变性,而不必求助于 IO Monad。我的理解已经“抽象”了存在技术差异。
- 如果是这种情况,为什么闭包不能捕获可变变量,但它们可以捕获 ref 实例?
- 更一般地说,允许这种差异的两种形式之间的技术差异是什么?
- 从语言设计的角度来看,引入两个可变快捷方式而不仅仅是一个的目的是什么?
如果这是一个多方,我很抱歉,但它们似乎都是相关的。