反向数据构造函数

Ram*_*esh 3 haskell

如何定义一个接受我的类型并返回其原始"同义词"的函数?例如:

newtype MyInt = MakeInt Int
Run Code Online (Sandbox Code Playgroud)

我想要一个功能:

unMyInt :: MakeInt -> Int
Run Code Online (Sandbox Code Playgroud)

fuz*_*fuz 15

另一种(有时更舒适的方式)是记录语法:

newtype myInt a = MyInt { unMyInt :: Int }
Run Code Online (Sandbox Code Playgroud)

这会自动定义一个功能

unMyInt :: MyInt -> Int
Run Code Online (Sandbox Code Playgroud)


sep*_*p2k 6

通过构造函数上的模式匹配:

unMyInt (MakeInt i) = i
Run Code Online (Sandbox Code Playgroud)