stt-0.1.0.0: A monad transformer version of the ST monad

CopyrightJosef Svenningsson 2008-2010
(c) The University of Glasgow 1994-2000
LicenseBSD
Maintainermckean.kylej@gmail.com
Stabilityexperimental
Portabilitynon-portable (GHC Extensions)
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Trans.ST

Contents

Description

This library provides a monad transformer version of the ST monad. Warning! This monad transformer should not be used with monads that can contain multiple answers, like the list monad. The reason is that the will be duplicated across the different answers and this cause Bad Things to happen (such as loss of referential transparency). Safe monads include the monads State, Reader, Writer, Maybe and combinations of their corresponding monad transformers.

Synopsis

The ST Monad Transformer

data STT s m a Source #

STT is the monad transformer providing polymorphic updateable references

Instances

MonadError e m => MonadError e (STT s m) Source # 

Methods

throwError :: e -> STT s m a #

catchError :: STT s m a -> (e -> STT s m a) -> STT s m a #

MonadReader r m => MonadReader r (STT s m) Source # 

Methods

ask :: STT s m r #

local :: (r -> r) -> STT s m a -> STT s m a #

reader :: (r -> a) -> STT s m a #

MonadState s m => MonadState s (STT s' m) Source # 

Methods

get :: STT s' m s #

put :: s -> STT s' m () #

state :: (s -> (a, s)) -> STT s' m a #

MonadWriter w m => MonadWriter w (STT s m) Source # 

Methods

writer :: (a, w) -> STT s m a #

tell :: w -> STT s m () #

listen :: STT s m a -> STT s m (a, w) #

pass :: STT s m (a, w -> w) -> STT s m a #

MonadTrans (STT s) Source # 

Methods

lift :: Monad m => m a -> STT s m a #

Monad m => Monad (STT s m) Source # 

Methods

(>>=) :: STT s m a -> (a -> STT s m b) -> STT s m b #

(>>) :: STT s m a -> STT s m b -> STT s m b #

return :: a -> STT s m a #

fail :: String -> STT s m a #

Functor m => Functor (STT s m) Source # 

Methods

fmap :: (a -> b) -> STT s m a -> STT s m b #

(<$) :: a -> STT s m b -> STT s m a #

MonadFix m => MonadFix (STT s m) Source # 

Methods

mfix :: (a -> STT s m a) -> STT s m a #

(Monad m, Functor m) => Applicative (STT s m) Source # 

Methods

pure :: a -> STT s m a #

(<*>) :: STT s m (a -> b) -> STT s m a -> STT s m b #

(*>) :: STT s m a -> STT s m b -> STT s m b #

(<*) :: STT s m a -> STT s m b -> STT s m a #

Monad m => PrimMonad (STT s m) Source # 

Associated Types

type PrimState (STT s m :: * -> *) :: * #

Methods

primitive :: (State# (PrimState (STT s m)) -> (#VoidRep, PtrRepLifted, State# (PrimState (STT s m)), a#)) -> STT s m a #

type PrimState (STT s m) Source # 
type PrimState (STT s m) = s

runSTT :: Monad m => (forall s. STT s m a) -> m a Source #

Executes a computation in the STT monad transformer

fixSTT :: MonadFix m => (a -> STT s m a) -> STT s m a Source #

Allow the result of a state transformer computation to be used (lazily) inside the computation. Note that if f is strict, fixSTT f = _|_.

Mutable references

newSTTRef :: Monad m => a -> STT s m (STRef s a) Source #

Create a new reference

readSTTRef :: Monad m => STRef s a -> STT s m a Source #

Reads the value of a reference

writeSTTRef :: Monad m => STRef s a -> a -> STT s m () Source #

Modifies the value of a reference

Unsafe Operations

unsafeIOToSTT :: Monad m => IO a -> STT s m a Source #