basic haskell:将类型转换为Int

basic haskell:将类型转换为Int,haskell,Haskell,如果我有一个类型,例如保险号是整数 我是否可以将insurancenumber转换为int,以便在比较函数中使用 intNI :: NI -> Int intNI x = Int (x) 如我所怀疑,NI被定义为 type NI = Int 那你就说 intNI :: NI -> Int intNI x = fromIntegral x 或者,在eta转换后: intNI :: NI -> Int intNI = fromIntegral 另一方面,似乎 data N

如果我有一个类型,例如保险号是整数

我是否可以将insurancenumber转换为int,以便在比较函数中使用

intNI :: NI -> Int
intNI x = Int (x)

如我所怀疑,
NI
被定义为

type NI = Int
那你就说

intNI :: NI -> Int
intNI x = fromIntegral x
或者,在eta转换后:

intNI :: NI -> Int
intNI = fromIntegral

另一方面,似乎

data NI = NI Int
在这种情况下,正确的方法是模式匹配,如下所示:

intNI (NI x) = x

这将从
NI x
中提取
x
位并返回它。

这一切取决于
NI
的定义方式。尝试
intNI x=from integral x
,或者
intNI(NI x)=x
。如果您计划比较两个
NI
,那么将它们作为typeclass
Ord
intNI(NI x)=x的实例派生出来,谢谢!如果
type NI=Int
,则
intNI=id