Copyright | (c) The University of Glasgow 2001 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | libraries@haskell.org |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Unsigned integer types.
- data Word :: *
- data Word8
- data Word16
- data Word32
- data Word64
- byteSwap16 :: Word16 -> Word16
- byteSwap32 :: Word32 -> Word32
- byteSwap64 :: Word64 -> Word64
Unsigned integral types
Bounded Word # | Since: 2.1 |
Enum Word # | Since: 2.1 |
Eq Word | |
Integral Word # | Since: 2.1 |
Data Word # | Since: 4.0.0.0 |
Num Word # | Since: 2.1 |
Ord Word | |
Read Word # | Since: 4.5.0.0 |
Real Word # | Since: 2.1 |
Show Word # | Since: 2.1 |
Ix Word # | Since: 4.6.0.0 |
FiniteBits Word # | Since: 4.6.0.0 |
Bits Word # | Since: 2.1 |
Storable Word # | Since: 2.1 |
PrintfArg Word # | Since: 2.1 |
Generic1 k (URec k Word) # | |
Functor (URec * Word) # | |
Foldable (URec * Word) # | |
Traversable (URec * Word) # | |
Eq (URec k Word p) # | |
Ord (URec k Word p) # | |
Show (URec k Word p) # | |
Generic (URec k Word p) # | |
data URec k Word # | Used for marking occurrences of Since: 4.9.0.0 |
type Rep1 k (URec k Word) # | |
type Rep (URec k Word p) # | |
8-bit unsigned integer type
Bounded Word8 # | Since: 2.1 |
Enum Word8 # | Since: 2.1 |
Eq Word8 # | Since: 2.1 |
Integral Word8 # | Since: 2.1 |
Data Word8 # | Since: 4.0.0.0 |
Num Word8 # | Since: 2.1 |
Ord Word8 # | Since: 2.1 |
Read Word8 # | Since: 2.1 |
Real Word8 # | Since: 2.1 |
Show Word8 # | Since: 2.1 |
Ix Word8 # | Since: 2.1 |
FiniteBits Word8 # | Since: 4.6.0.0 |
Bits Word8 # | Since: 2.1 |
Storable Word8 # | Since: 2.1 |
PrintfArg Word8 # | Since: 2.1 |
16-bit unsigned integer type
Bounded Word16 # | Since: 2.1 |
Enum Word16 # | Since: 2.1 |
Eq Word16 # | Since: 2.1 |
Integral Word16 # | Since: 2.1 |
Data Word16 # | Since: 4.0.0.0 |
Num Word16 # | Since: 2.1 |
Ord Word16 # | Since: 2.1 |
Read Word16 # | Since: 2.1 |
Real Word16 # | Since: 2.1 |
Show Word16 # | Since: 2.1 |
Ix Word16 # | Since: 2.1 |
FiniteBits Word16 # | Since: 4.6.0.0 |
Bits Word16 # | Since: 2.1 |
Storable Word16 # | Since: 2.1 |
PrintfArg Word16 # | Since: 2.1 |
32-bit unsigned integer type
Bounded Word32 # | Since: 2.1 |
Enum Word32 # | Since: 2.1 |
Eq Word32 # | Since: 2.1 |
Integral Word32 # | Since: 2.1 |
Data Word32 # | Since: 4.0.0.0 |
Num Word32 # | Since: 2.1 |
Ord Word32 # | Since: 2.1 |
Read Word32 # | Since: 2.1 |
Real Word32 # | Since: 2.1 |
Show Word32 # | Since: 2.1 |
Ix Word32 # | Since: 2.1 |
FiniteBits Word32 # | Since: 4.6.0.0 |
Bits Word32 # | Since: 2.1 |
Storable Word32 # | Since: 2.1 |
PrintfArg Word32 # | Since: 2.1 |
64-bit unsigned integer type
Bounded Word64 # | Since: 2.1 |
Enum Word64 # | Since: 2.1 |
Eq Word64 # | Since: 2.1 |
Integral Word64 # | Since: 2.1 |
Data Word64 # | Since: 4.0.0.0 |
Num Word64 # | Since: 2.1 |
Ord Word64 # | Since: 2.1 |
Read Word64 # | Since: 2.1 |
Real Word64 # | Since: 2.1 |
Show Word64 # | Since: 2.1 |
Ix Word64 # | Since: 2.1 |
FiniteBits Word64 # | Since: 4.6.0.0 |
Bits Word64 # | Since: 2.1 |
Storable Word64 # | Since: 2.1 |
PrintfArg Word64 # | Since: 2.1 |
byte swapping
Notes
- All arithmetic is performed modulo 2^n, where n is the number of
bits in the type. One non-obvious consequence of this is that
negate
should not raise an error on negative arguments. - For coercing between any two integer types, use
fromIntegral
, which is specialized for all the common cases so should be fast enough. Coercing word types to and from integer types preserves representation, not sign. - An unbounded size unsigned integer type is available with
Natural
. - The rules that hold for
Enum
instances over a bounded type such asInt
(see the section of the Haskell report dealing with arithmetic sequences) also hold for theEnum
instances over the variousWord
types defined here. - Right and left shifts by amounts greater than or equal to the width
of the type result in a zero result. 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.