monad-lgbt-0.0.1: Monad transformers for combining local and global state.

Safe HaskellNone
LanguageHaskell2010

Control.Monad.State.LGBT

Synopsis

Documentation

data LGLT localState globalState m a Source

Instances

MonadTrans (LGLT localState globalState) Source 
Monad (LGLT localState globalState m) Source 
Functor (LGLT localState globalState m) Source 
Applicative (LGLT localState globalState m) Source 
Alternative (LGLT localState globalState m) Source 
MonadPlus (LGLT localState globalState m) Source 
MonadIO m => MonadIO (LGLT localState globalState m) Source 
Monad m => MonadLogic (LGLT localState globalState m) Source 
Monad m => MonadLGBT (LGLT localState globalState m) localState globalState Source 

data LGCT localState globalState result m a Source

Local/global state transformer with unlimited continuations MonadCont

Instances

MonadTrans (LGCT localState globalState result) Source 
Monad (LGCT localState globalState result m) Source 
Functor (LGCT localState globalState result m) Source 
Applicative (LGCT localState globalState result m) Source 
MonadIO m => MonadIO (LGCT localState globalState result m) Source 
MonadCont (LGCT localState globalState result m) Source 

class Monad m => MonadLGBT m localState globalState | m -> localState, m -> globalState where Source

Local/global state transformer class abstracts over details of how global and local state are realized. The separation of local and global state only makes sense when we also allow for some backtracking monad in between, hence the name "Local/global backtracking transformer".

Minimal complete definition

getLocal, getGlobal, putLocal, putGlobal

Methods

getLocal :: m localState Source

getGlobal :: m globalState Source

putLocal :: localState -> m () Source

putGlobal :: globalState -> m () Source

modifyLocal :: (localState -> localState) -> m () Source

modifyGlobal :: (globalState -> globalState) -> m () Source

Instances

Monad m => MonadLGBT (LGLT localState globalState m) localState globalState Source 

runLGLT :: forall m localState globalState success result. Monad m => LGLT localState globalState m success -> localState -> globalState -> (success -> localState -> globalState -> m result -> m result) -> (globalState -> m result) -> m result Source

runLGCT :: forall m localState globalState result. Monad m => LGCT localState globalState result m result -> localState -> globalState -> m ((result, localState), globalState) Source

withGlobal :: Monad m => (globalState -> m globalState) -> LGLT globalState globalState m () Source

withLocal :: Monad m => (localState -> m localState) -> LGLT localState globalState m () Source

getsLocal :: forall m localState globalState a. MonadLGBT m localState globalState => (localState -> a) -> m a Source

getsGlobal :: forall m localState globalState a. MonadLGBT m localState globalState => (globalState -> a) -> m a Source