This interface provides a collection of sized, signed integers. The types supported are as follows:

type | number of bits |

Int8 | 8 |

Int16 | 16 |

Int32 | 32 |

Int64 | 64 |

For each type *I* above, we provide the following instances.

data I -- Signed Ints iToInt :: I -> Int -- not provided for Int64 intToI :: Int -> I -- not provided for Int64 instance Eq I instance Ord I instance Show I instance Read I instance Bounded I instance Num I instance Real I instance Integral I instance Enum I instance Ix I instance Bits I |

Plus the coercion functions

int8ToInt16 :: Int8 -> Int16 int8ToInt32 :: Int8 -> Int32 int8ToInt64 :: Int8 -> Int64 int16ToInt8 :: Int16 -> Int8 int16ToInt32 :: Int16 -> Int32 int16ToInt64 :: Int16 -> Int64 int32ToInt8 :: Int32 -> Int8 int32ToInt16 :: Int32 -> Int16 int32ToInt64 :: Int32 -> Int64 int64ToInt8 :: Int64 -> Int8 int64ToInt16 :: Int64 -> Int16 int64ToInt32 :: Int64 -> Int32 int8ToInt :: Int8 -> Int int16ToInt :: Int16 -> Int int32ToInt :: Int32 -> Int int64ToInt :: Int64 -> Int intToInt8 :: Int -> Int8 intToInt16 :: Int -> Int16 intToInt32 :: Int -> Int32 intToInt64 :: Int -> Int64 integerToInt8 :: Integer -> Int8 integerToInt16 :: Integer -> Int16 integerToInt32 :: Integer -> Int32 integerToInt64 :: Integer -> Int64 int64ToInteger :: Int64 -> Integer int32ToInteger :: Int32 -> Integer int16ToInteger :: Int16 -> Integer int8ToInteger :: Int8 -> Integer |

The rules that hold for

`Enum`instances over a bounded type such as`Int`(see the section of the Haskell report dealing with arithmetic sequences) also hold for the`Enum`instances over the various`Int`types defined here.Right and left shifts by amounts greater than or equal to the width of the type result in either zero or -1, depending on the sign of the value being shifted. This is contrary to the behaviour in C, which is undefined; a common interpretation is to truncate the shift count to the width of the type, for example

`1 << 32 == 1`in some C implementations.Hugs does not provide

`Int64`at the moment.

The `Int` module also exports the overloaded operations for
converting to and from Haskell `Int`s:

toInt :: (Integral a) => a -> Int fromInt :: (Num a) => Int -> a |

Portability note: both Hugs98 and all releases of GHC prior to
ghc-4.05 also exports these two via the Prelude. So, to have code
that uses `toInt` and `fromInt` be maximally portable,
make sure you add an import on `Int` (even if the version
of Hugs or GHC you're currently using may not export these two
from there.)