| 
| Control.Monad.ST.Lazy | | Portability | non-portable (requires universal quantification for runST) |  | Stability | provisional |  | Maintainer | libraries@haskell.org |  
  |  
  | 
 | 
 | 
 | 
| Description | 
| This module presents an identical interface to Control.Monad.ST,
 except that the monad delays evaluation of state operations until
 a value depending on them is required.
 | 
 | 
| Synopsis | 
 | 
 | 
 | 
 | 
| The ST monad
 | 
 | 
 | 
The lazy 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.
 The >>= and >> operations are not strict in the state.  For example,
 runST (writeSTRef _|_ v >>= readSTRef _|_ >> return 2) = 2  |    Instances |   |  
  | 
 | 
 | 
| 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.
 | 
 | 
 | 
| Allow the result of a state transformer computation to be used (lazily)
 inside the computation.
 Note that if f is strict, fixST f = _|_.
 | 
 | 
| Converting between strict and lazy ST
 | 
 | 
 | 
| Convert a strict ST computation into a lazy one.  The strict state
thread passed to strictToLazyST is not performed until the result of
the lazy state thread it returns is demanded.
 | 
 | 
 | 
| Convert a lazy ST computation into a strict one.
 | 
 | 
| Converting ST To IO
 | 
 | 
| RealWorld | 
 | 
 | 
| A monad transformer embedding lazy state transformers in the IO
 monad.  The RealWorld parameter indicates that the internal state
 used by the ST computation is a special one supplied by the IO
 monad, and thus distinct from those used by invocations of runST.
 | 
 | 
| Unsafe operations
 | 
 | 
 | 
 | 
 | 
 | 
| Produced by Haddock version 2.4.2 |