packages feed

exference-1.6.0.0: environment/State.hs

module Control.Monad.State where



newtype State s a = State (s -> (a, s))
newtype StateT s m a = StateT (s -> m (a, s))

state :: (Control.Monad.Monad m)
      => (s -> (a, s))  -- ^pure state transformer
      -> StateT s m a   -- ^equivalent state-passing computation

get :: Control.Monad.Monad m => StateT s m s 
put :: Control.Monad.Monad m => s -> StateT s m () 

instance Control.Monad.MonadTrans (StateT s)
instance Control.Monad.Monad m => Control.Monad.Monad (StateT s m)
instance Data.Functor.Functor m => Data.Functor.Functor (StateT s m)
instance Control.Monad.MonadFix m => MonadFix (StateT s m)
instance (Data.Functor.Functor m, Control.Monad.Monad m) => Control.Applicative.Applicative (StateT s m)
instance (Data.Functor.Functor m, Control.Monad.MonadPlus m) => Control.Applicative.Alternative (StateT s m)
instance Control.Monad.MonadPlus m => Control.Monad.MonadPlus (StateT s m)
instance Control.Monad.MonadIO m => MonadIO (StateT s m)