我对f#中变量的肤浅理解表明,将变量声明为“可变”并使用“ref”变量本质上都可以做相同的事情。它们都是解决同一基本问题的不同方法-功能语言中有限且结构化的可变性允许,而不必诉诸IO Monad。根据我的理解,存在技术上的差异。

  • 如果是这种情况,为什么闭包不能捕获可变变量,但是它们可以捕获ref实例?
  • 通常,两种形式之间的技术区别是什么?
  • 从语言设计的角度来看,引入两个可变性快捷方式而不是仅仅引入一个是什么目的?

  • 很抱歉,如果这是一个多方合作伙伴,但它们似乎都相关。

    最佳答案



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

    尤其是“语言设计评论”部分(我在这里引用了它,但是它并不是很好地独立,您需要整个Blog条目作为上下文)。

    10-02 02:29
    查看更多