| Haskell Hierarchical Libraries (base package) | Contents | Index

GHC.ST

Portability | non-portable (GHC Extensions)
Stability | internal
Maintainer | cvs-ghc@haskell.org

Description
The `ST` Monad.
Synopsis

newtype ST s a = ST (STRep s a)
type STRep s a = State# s -> (#State# s, a#)
data STret s a = STret (State# s) a
liftST :: ST s a -> State# s -> STret s a
unsafeInterleaveST :: ST s a -> ST s a
fixST :: (a -> ST s a) -> ST s a
runST :: (forall s . ST s a) -> a
runSTRep :: (forall s . STRep s a) -> a

Documentation
newtype ST s a

The strict state-transformer monad. A computation of type ``ST` s a` transforms an internal state indexed by `s`, and returns a value of type `a`. The `s` parameter is either

- an unstantiated type variable (inside invocations of `runST`), or
- `RealWorld` (inside invocations of `stToIO`).

It serves to keep the internal states of different invocations of `runST` separate from each other and from invocations of `stToIO`.

Constructors

ST (STRep s a) |

Instances

MonadFix (ST s)
(Typeable a, Typeable b) => Typeable (ST a b)
MArray (STArray s) e (ST s)
MArray (STUArray s) Bool (ST s)
MArray (STUArray s) Char (ST s)
MArray (STUArray s) Int (ST s)
MArray (STUArray s) Word (ST s)
MArray (STUArray s) (Ptr a) (ST s)
MArray (STUArray s) (FunPtr a) (ST s)
MArray (STUArray s) Float (ST s)
MArray (STUArray s) Double (ST s)
MArray (STUArray s) (StablePtr a) (ST s)
MArray (STUArray s) Int8 (ST s)
MArray (STUArray s) Int16 (ST s)
MArray (STUArray s) Int32 (ST s)
MArray (STUArray s) Int64 (ST s)
MArray (STUArray s) Word8 (ST s)
MArray (STUArray s) Word16 (ST s)
MArray (STUArray s) Word32 (ST s)
MArray (STUArray s) Word64 (ST s)
Functor (ST s)
Monad (ST s)
Show (ST s a)

type STRep s a = State# s -> (#State# s, a#)
data STret s a

Constructors

STret (State# s) a |

liftST :: ST s a -> State# s -> STret s a
unsafeInterleaveST :: ST s a -> ST s a
fixST :: (a -> ST s a) -> ST s a
Allow the result of a state transformer computation to be used (lazily) inside the computation. Note that if `f` is strict, ``fixST` f = _|_`.
runST :: (forall s . ST s a) -> a
Return the value computed by a state transformer computation. The `forall` ensures that the internal state used by the `ST` computation is inaccessible to the rest of the program.
runSTRep :: (forall s . STRep s a) -> a
Produced by Haddock version 0.6