base-4.9.0.0: Basic libraries

Copyright(c) The University of Glasgow 2001
LicenseBSD-style (see the file libraries/base/LICENSE)
Maintainerlibraries@haskell.org
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Data.Word

Contents

Description

Unsigned integer types.

Synopsis

Unsigned integral types

data Word :: TYPE Lifted Source

A Word is an unsigned integral type, with the same size as Int.

Instances

Bounded Word 
Enum Word 
Eq Word 

Methods

(==) :: Word -> Word -> Bool Source

(/=) :: Word -> Word -> Bool Source

Integral Word 

Methods

quot :: Word -> Word -> Word

rem :: Word -> Word -> Word

div :: Word -> Word -> Word

mod :: Word -> Word -> Word

quotRem :: Word -> Word -> (Word, Word)

divMod :: Word -> Word -> (Word, Word)

toInteger :: Word -> Integer

Data Word 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word -> c Word

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word

toConstr :: Word -> Constr

dataTypeOf :: Word -> DataType

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Word)

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word)

gmapT :: (forall b. Data b => b -> b) -> Word -> Word

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word -> r

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word -> r

gmapQ :: (forall d. Data d => d -> u) -> Word -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word -> m Word

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word -> m Word

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word -> m Word

Num Word 

Methods

(+) :: Word -> Word -> Word

(-) :: Word -> Word -> Word

(*) :: Word -> Word -> Word

negate :: Word -> Word

abs :: Word -> Word

signum :: Word -> Word

fromInteger :: Integer -> Word

Ord Word 
Read Word 
Real Word 

Methods

toRational :: Word -> Rational

Show Word 

Methods

showsPrec :: Int -> Word -> ShowS

show :: Word -> String

showList :: [Word] -> ShowS

Ix Word 

Methods

range :: (Word, Word) -> [Word]

index :: (Word, Word) -> Word -> Int

unsafeIndex :: (Word, Word) -> Word -> Int

inRange :: (Word, Word) -> Word -> Bool

rangeSize :: (Word, Word) -> Int

unsafeRangeSize :: (Word, Word) -> Int

FiniteBits Word 
Bits Word 
Storable Word 

Methods

sizeOf :: Word -> Int

alignment :: Word -> Int

peekElemOff :: Ptr Word -> Int -> IO Word

pokeElemOff :: Ptr Word -> Int -> Word -> IO ()

peekByteOff :: Ptr b -> Int -> IO Word

pokeByteOff :: Ptr b -> Int -> Word -> IO ()

peek :: Ptr Word -> IO Word

poke :: Ptr Word -> Word -> IO ()

PrintfArg Word 
Eq (URec Word _p) 

Methods

(==) :: URec Word _p -> URec Word _p -> Bool Source

(/=) :: URec Word _p -> URec Word _p -> Bool Source

Ord (URec Word _p) 

Methods

compare :: URec Word _p -> URec Word _p -> Ordering Source

(<) :: URec Word _p -> URec Word _p -> Bool Source

(<=) :: URec Word _p -> URec Word _p -> Bool Source

(>) :: URec Word _p -> URec Word _p -> Bool Source

(>=) :: URec Word _p -> URec Word _p -> Bool Source

max :: URec Word _p -> URec Word _p -> URec Word _p Source

min :: URec Word _p -> URec Word _p -> URec Word _p Source

Show (URec Word _p) 

Methods

showsPrec :: Int -> URec Word _p -> ShowS

show :: URec Word _p -> String

showList :: [URec Word _p] -> ShowS

Generic (URec Word _p) 

Associated Types

type Rep (URec Word _p) :: * -> *

Methods

from :: URec Word _p -> Rep (URec Word _p) x

to :: Rep (URec Word _p) x -> URec Word _p

data URec Word = UWord {}

Used for marking occurrences of Word#

type Rep (URec Word _p) = D1 (MetaData "URec" "GHC.Generics" "base" False) (C1 (MetaCons "UWord" PrefixI True) (S1 (MetaSel (Just Symbol "uWord#") NoSourceUnpackedness NoSourceStrictness DecidedLazy) UWord)) 

data Word8

8-bit unsigned integer type

Instances

Bounded Word8 
Enum Word8 
Eq Word8 

Methods

(==) :: Word8 -> Word8 -> Bool Source

(/=) :: Word8 -> Word8 -> Bool Source

Integral Word8 
Data Word8 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word8 -> c Word8

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word8

toConstr :: Word8 -> Constr

dataTypeOf :: Word8 -> DataType

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Word8)

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word8)

gmapT :: (forall b. Data b => b -> b) -> Word8 -> Word8

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word8 -> r

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word8 -> r

gmapQ :: (forall d. Data d => d -> u) -> Word8 -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word8 -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word8 -> m Word8

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word8 -> m Word8

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word8 -> m Word8

Num Word8 
Ord Word8 
Read Word8 
Real Word8 
Show Word8 

Methods

showsPrec :: Int -> Word8 -> ShowS

show :: Word8 -> String

showList :: [Word8] -> ShowS

Ix Word8 
FiniteBits Word8 
Bits Word8 
Storable Word8 

Methods

sizeOf :: Word8 -> Int

alignment :: Word8 -> Int

peekElemOff :: Ptr Word8 -> Int -> IO Word8

pokeElemOff :: Ptr Word8 -> Int -> Word8 -> IO ()

peekByteOff :: Ptr b -> Int -> IO Word8

pokeByteOff :: Ptr b -> Int -> Word8 -> IO ()

peek :: Ptr Word8 -> IO Word8

poke :: Ptr Word8 -> Word8 -> IO ()

PrintfArg Word8 

data Word16

16-bit unsigned integer type

Instances

Bounded Word16 
Enum Word16 
Eq Word16 
Integral Word16 
Data Word16 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word16 -> c Word16

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word16

toConstr :: Word16 -> Constr

dataTypeOf :: Word16 -> DataType

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Word16)

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word16)

gmapT :: (forall b. Data b => b -> b) -> Word16 -> Word16

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word16 -> r

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word16 -> r

gmapQ :: (forall d. Data d => d -> u) -> Word16 -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word16 -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word16 -> m Word16

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word16 -> m Word16

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word16 -> m Word16

Num Word16 
Ord Word16 
Read Word16 
Real Word16 
Show Word16 
Ix Word16 
FiniteBits Word16 
Bits Word16 
Storable Word16 
PrintfArg Word16 

data Word32

32-bit unsigned integer type

Instances

Bounded Word32 
Enum Word32 
Eq Word32 
Integral Word32 
Data Word32 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word32 -> c Word32

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word32

toConstr :: Word32 -> Constr

dataTypeOf :: Word32 -> DataType

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Word32)

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word32)

gmapT :: (forall b. Data b => b -> b) -> Word32 -> Word32

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word32 -> r

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word32 -> r

gmapQ :: (forall d. Data d => d -> u) -> Word32 -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word32 -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word32 -> m Word32

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word32 -> m Word32

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word32 -> m Word32

Num Word32 
Ord Word32 
Read Word32 
Real Word32 
Show Word32 
Ix Word32 
FiniteBits Word32 
Bits Word32 
Storable Word32 
PrintfArg Word32 

data Word64

64-bit unsigned integer type

Instances

Bounded Word64 
Enum Word64 
Eq Word64 
Integral Word64 
Data Word64 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word64 -> c Word64

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word64

toConstr :: Word64 -> Constr

dataTypeOf :: Word64 -> DataType

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Word64)

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word64)

gmapT :: (forall b. Data b => b -> b) -> Word64 -> Word64

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word64 -> r

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word64 -> r

gmapQ :: (forall d. Data d => d -> u) -> Word64 -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word64 -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word64 -> m Word64

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word64 -> m Word64

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word64 -> m Word64

Num Word64 
Ord Word64 
Read Word64 
Real Word64 
Show Word64 
Ix Word64 
FiniteBits Word64 
Bits Word64 
Storable Word64 
PrintfArg Word64 

byte swapping

byteSwap16 :: Word16 -> Word16

Swap bytes in Word16.

Since: 4.7.0.0

byteSwap32 :: Word32 -> Word32

Reverse order of bytes in Word32.

Since: 4.7.0.0

byteSwap64 :: Word64 -> Word64

Reverse order of bytes in Word64.

Since: 4.7.0.0

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 as Int (see the section of the Haskell report dealing with arithmetic sequences) also hold for the Enum instances over the various Word 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.