捕获方面的Mutable vs Ref变量

时间:2010-10-19 16:25:47

标签: f# closures mutability

我对f#中变量的肤浅理解表明,将变量声明为“可变”并使用“ref”变量基本上都是同样的事情。它们是解决相同基础问题的不同方式 - 功能语言中有限且结构化的可变性允许,而不必求助于IO Monad。我的理解已经“抽象”了技术上的不同。

  1. 如果是这种情况,为什么闭包不能捕获可变变量,但它们可以捕获ref实例?
  2. 更一般地说,允许这种差异的两种形式之间的技术差异是什么?
  3. 从语言设计的角度来看,引入两个可变性快捷方式的目的是什么呢?
  4. 我很抱歉,如果这是一个多人,但他们似乎都相关。

1 个答案:

答案 0 :(得分:6)

http://lorgonblog.wordpress.com/2008/11/12/on-lambdas-capture-and-mutability/

特别是“语言设计评论”部分(我在这里引用它,但它并不孤立,你需要整个博客条目的上下文)。