update-monad-0.1.0.0

Safe HaskellSafe
LanguageHaskell2010

Update

Documentation

class Monoid p => ApplyAction p s where Source #

Minimal complete definition

applyAction

Methods

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

Instances
ApplyAction (Endo s) s Source # 
Instance details

Defined in Update

Methods

applyAction :: Endo s -> 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
ApplyAction p s => MonadUpdate (Update p s) p s Source # 
Instance details

Defined in Update

Methods

putAction :: p -> Update p s () Source #

getState :: Update p s s Source #

data Update p s a Source #

Constructors

Update 

Fields

Instances
ApplyAction p s => Monad (Update p s) Source # 
Instance details

Defined in Update

Methods

(>>=) :: Update p s a -> (a -> Update p s b) -> Update p s b #

(>>) :: Update p s a -> Update p s b -> Update p s b #

return :: a -> Update p s a #

fail :: String -> Update p s a #

Functor (Update p s) Source # 
Instance details

Defined in Update

Methods

fmap :: (a -> b) -> Update p s a -> Update p s b #

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

ApplyAction p s => Applicative (Update p s) Source # 
Instance details

Defined in Update

Methods

pure :: a -> Update p s a #

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

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

(*>) :: Update p s a -> Update p s b -> Update p s b #

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

ApplyAction p s => MonadUpdate (Update p s) p s Source # 
Instance details

Defined in Update

Methods

putAction :: p -> Update p s () Source #

getState :: Update p s s Source #

evalUpdate :: ApplyAction p s => Update p s a -> s -> a Source #

execUpdate :: ApplyAction p s => Update p s a -> s -> s Source #

collectUpdate :: ApplyAction p s => Update p s a -> s -> p Source #

auditUpdate :: ApplyAction p s => Update p s a -> s -> (s, p, a) Source #