我想将Integer转换为Int,因此它与我的类型声明一致。必须有一种简单的方法可以像在Java中进行转换一样吗?
答案 0 :(得分:4)
只需使用fromInteger
功能:
fromInteger :: Num a => Integer -> a
你可以在GHCi中使用它
> fromInteger (1 :: Integer) :: Int
1
但要注意,如果超出Int
的界限,会有一些有趣的行为:
> let x = (fromIntegral (maxBound :: Int) :: Integer) + 1
> x
2147483648
> fromInteger x :: Int
-2147483648
答案 1 :(得分:1)
请注意,Integer
的值可能比Int
中的值大得多,因此在某些情况下进行转换时会出现溢出。
但是,如果不采取这种预防措施,最简单的转换方法就是使用fromIntegral
功能:
myInteger :: Integer
myInteger = 1234
myInt :: Int
myInt = fromIntegral myInteger