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 |

All arithmetic is performed modulo 2^n.

For coercing between various integer types, use

`fromIntegral`, which is specialized for all the common cases so should be fast enough.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 following functions are deprecated in the new FFI. Do
*not* use the following functions if you are interested in
portability. Most of these functions are here for legacy reasons and may just
vanish one day. You have been warned.

The `Int` module also exports the overloaded operations for
converting to and from Haskell `Int`s.
However, for coercing between various integer types, better use
`fromIntegral`, which is specialized for all the
common cases so should be fast enough.

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.)