2016-09-18 268 views
4
STM (State# RealWorld -> (#State# RealWorld, a#)) 

#沒有顯示在Haskell運營商列表中,谷歌也沒有產生任何有用的東西。 Ghci:>:t (#)指出:變量不在範圍內。'#'是什麼意思?

那麼這個角色做了什麼?爲什麼它用在上面的一段代碼中(來自STM)?

回答

5

你需要一種語言擴展才能使用它,這就是它的特別之處!

它什麼也沒做,它只是一個特殊的人物,GHC人們喜歡用低級別的拳擊相關的東西。

(# a, b #)這是ab未裝箱的元組,也就是你看到有什麼樣的類型 - 這不是(#State# , ...,這是(# State#, ...

+0

還有什麼讓我困惑的是,有提及''狀態#''和''#狀態#'' - 這兩者是相同還是有區別? – BitTickler

+0

啊!那麼也沒有涉及到的''''''!這可能就是證明haskell解析器在解析時更加智能化,因爲我是:) – BitTickler

+3

實際上,您需要兩種語言擴展名來代替unboxed元組:'UnboxedTuples'和'MagicHash',以允許標識符名稱如'State#' 。 – dfeuer