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

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Trans.ST.Internal

Synopsis

Documentation

newtype STT s m a #

STT is the monad transformer providing polymorphic updateable references

Constructors

STT 

Fields

Instances

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

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) # 

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) # 

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) # 

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) # 

Methods

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

Monad m => Monad (STT s m) # 

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) # 

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) # 

Methods

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

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

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) # 

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) # 
type PrimState (STT s m) = s

data STTRet s a #

Constructors

STTRet (State# s) a 

Instances

Functor (STTRet s) # 

Methods

fmap :: (a -> b) -> STTRet s a -> STTRet s b #

(<$) :: a -> STTRet s b -> STTRet s a #

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

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