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.