如何定义一个函数来接受我的类型并返回它的原语“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