2015-10-30 112 views

回答

4

根據(monadic)上下文中的值,Haskell僅支持變量。一旦你看到這些,有一些像MVar這確實可以是空的。

如果你想表示一個值的簡單可空性,儘管如此,Maybe a是一個完美的方法來做到這一點,與實際值分開是一個可變的引用或只是一個不可變的東西。


擴大和說明:

newIORef :: a -> IO (IORef a) 

但我們可以很容易地編寫newEmptyIORef這樣:

newEmptyIORef :: IO (IORef (Maybe a)) 
newEmptyIORef = newIORef Nothing 

注意到,Maybe (IORef a) ≠ IORef (Maybe a)

+0

在程序聲明變量之後,Haskell程序可以將MVar'綁定到一個值(爲變量賦值)嗎?我把這個* lazy binding *或* lazy assignment *(或* deferred * binding或assignment)稱爲*。 –

+1

@DerekMahar這是MVars的一點,但我不確定這是不是一個好例子 –

+1

@DerekMahar不。沒有定義它就沒有辦法初始化/聲明一個變量。 –