7

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

  1. 如果是这种情况,为什么闭包不能捕获可变变量,但它们可以捕获 ref 实例?
  2. 更一般地说,允许这种差异的两种形式之间的技术差异是什么?
  3. 从语言设计的角度来看,引入两个可变快捷方式而不仅仅是一个的目的是什么?

如果这是一个多方,我很抱歉,但它们似乎都是相关的。

4

1 回答 1

6

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

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

于 2010-10-19T18:06:45.890 回答