This library provides unsigned integers of various sizes. The types supported are as follows:
type number of bits
For each type W above, we provide the following functions and instances. The type I refers to the signed integer type of the same size.
data W -- Unsigned Ints
instance Eq W
instance Ord W
instance Show W
instance Read W
instance Bounded W
instance Num W
instance Real W
instance Integral W
instance Enum W
instance Ix W
instance Bits W
Plus
word8ToWord32 :: Word8 -> Word32
word32ToWord8 :: Word32 -> Word8
word16ToWord32 :: Word16 -> Word32
word32ToWord16 :: Word32 -> Word16
word8ToInt :: Word8 -> Int
intToWord8 :: Int -> Word8
word16ToInt :: Word16 -> Int
intToWord16 :: Int -> Word16
word32ToInt :: Word32 -> Int
intToWord32 :: Int -> Word32
Notes:
negate
should not raise an error on negative arguments.
wToI converts an unsigned n-bit value to the
signed n-bit value with the same representation. For example,
word8ToInt8 0xff = -1.
Likewise, iToW converts signed n-bit values to the
corresponding unsigned n-bit value.
Prelude.fromIntegral :: (Integral a, Num b) => a -> b to
coerce between different sizes or to preserve sign when converting
between values of the same size.
Natural providing
an unbounded size unsigned integer --- just as Integer provides
unbounded size signed integers. We do not do that yet since there is
no demand for it. Doing so would require Bits.bitSize to return
Maybe Int.
Enum instances stop when they reach their upper or lower
bound --- they don't overflow the way the Int and Float
instances do.
Hugs only provides Eq, Ord, Read and Show
instances for Word64 at the moment.