如何定義一個函數來接受我的類型並返回它的原語「synonym」?例如:反向數據構造函數
newtype MyInt = MakeInt Int
,我想一個函數:
unMyInt :: MakeInt -> Int
如何定義一個函數來接受我的類型並返回它的原語「synonym」?例如:反向數據構造函數
newtype MyInt = MakeInt Int
,我想一個函數:
unMyInt :: MakeInt -> Int
通過圖案構造匹配:
unMyInt (MakeInt i) = i
其他(有時更舒適的方式)是記錄語法:
newtype myInt a = MyInt { unMyInt :: Int }
這自動定義了一個函數
unMyInt :: MyInt -> Int
誰低估了我?他能解釋一下嗎? – fuz 2010-10-02 08:44:07
謝謝,我在哪裏可以讀到這個構造意味着什麼? – Ramesh 2010-09-27 23:33:15
@Ramesh:在任何haskell教程或書籍(查找關於模式匹配的章節)。這意味着「對於任何我來說,將'unMyInt'應用於'MakeInt i'值是'i'」。 – sepp2k 2010-09-27 23:36:06
@Ramesh:例如,看看來自真實世界Haskell的[關於模式匹配的章節](http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html#deftypes.pattern)。 – sepp2k 2010-09-27 23:38:54