update-monad-0.1.0.0

Safe HaskellSafe
LanguageHaskell2010

UpdateT

Documentation

class Monoid p => ApplyAction p s where Source #

Minimal complete definition

applyAction

Methods

applyAction :: p -> s -> s Source #

class (ApplyAction p s, Monad m) => MonadUpdate m p s | m -> s, m -> p where Source #

Minimal complete definition

putAction, getState

Methods

putAction :: p -> m () Source #

getState :: m s Source #

Instances
(Monad m, ApplyAction p s) => MonadUpdate (UpdateT p s m) p s Source # 
Instance details

Defined in UpdateT

Methods

putAction :: p -> UpdateT p s m () Source #

getState :: UpdateT p s m s Source #

data UpdateT p s m a Source #

Constructors

UpdateT 

Fields

Instances
(ApplyAction p s, Monad m) => Monad (UpdateT p s m) Source # 
Instance details

Defined in UpdateT

Methods

(>>=) :: UpdateT p s m a -> (a -> UpdateT p s m b) -> UpdateT p s m b #

(>>) :: UpdateT p s m a -> UpdateT p s m b -> UpdateT p s m b #

return :: a -> UpdateT p s m a #

fail :: String -> UpdateT p s m a #

Functor m => Functor (UpdateT p s m) Source # 
Instance details

Defined in UpdateT

Methods

fmap :: (a -> b) -> UpdateT p s m a -> UpdateT p s m b #

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

(ApplyAction p s, Monad m) => Applicative (UpdateT p s m) Source # 
Instance details

Defined in UpdateT

Methods

pure :: a -> UpdateT p s m a #

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

liftA2 :: (a -> b -> c) -> UpdateT p s m a -> UpdateT p s m b -> UpdateT p s m c #

(*>) :: UpdateT p s m a -> UpdateT p s m b -> UpdateT p s m b #

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

(MonadIO m, ApplyAction p s) => MonadIO (UpdateT p s m) Source # 
Instance details

Defined in UpdateT

Methods

liftIO :: IO a -> UpdateT p s m a #

(Monad m, ApplyAction p s) => MonadUpdate (UpdateT p s m) p s Source # 
Instance details

Defined in UpdateT

Methods

putAction :: p -> UpdateT p s m () Source #

getState :: UpdateT p s m s Source #

evalUpdateT :: (ApplyAction p s, Monad m) => UpdateT p s m a -> s -> m a Source #

execUpdateT :: (ApplyAction p s, Monad m) => UpdateT p s m a -> s -> m s Source #

collectUpdateT :: (ApplyAction p s, Monad m) => UpdateT p s m a -> s -> m p Source #

auditUpdateT :: (Monad m, ApplyAction p s) => UpdateT p s m a -> s -> m (s, p, a) Source #