如何在Haskell中将Integer转换为Int

时间:2013-11-17 17:13:45

标签: haskell integer int

我想将Integer转换为Int,因此它与我的类型声明一致。必须有一种简单的方法可以像在Java中进行转换一样吗?

2 个答案:

答案 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