【发布时间】:2016-01-31 02:13:03
【问题描述】:
Haskell 是否支持 unbound variables 中的 Oz programming language 概念?
【问题讨论】:
Haskell 是否支持 unbound variables 中的 Oz programming language 概念?
【问题讨论】:
Haskell 仅支持 变量 在(单子)上下文中的值。一旦你看到这些,就会发现像MVar 这样的某些确实可以是空的。
但是,如果您想表示一个值的简单可空性,Maybe a 是一种完美的方法,它与实际值是对可变对象或不可变对象的引用分开。
展开说明:
newIORef :: a -> IO (IORef a)
但是我们可以很容易地这样写newEmptyIORef:
newEmptyIORef :: IO (IORef (Maybe a))
newEmptyIORef = newIORef Nothing
注意Maybe (IORef a) ≠ IORef (Maybe a)。
【讨论】:
MVar 绑定到一个值(为变量赋值)吗?我称之为 lazy binding 或 lazy assignment(或 deferred binding 或 assignment)。
MVars(尽管如果你只使用一个线程我猜它是等效的)