basic haskell:将类型转换为Int
如果我有一个类型,例如保险号是整数 我是否可以将insurancenumber转换为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
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
,那么将它们作为typeclassOrd
intNI(NI x)=x的实例派生出来,谢谢!如果type NI=Int
,则intNI=id
。