atrans-0.1.0.0: A small collection of monad (transformer) instances.

Copyright(c) Philipp Pfeiffer 2016
LicenseMIT
Maintainerpfiff@hax-f.net
Stabilityexperimental
PortabilityPOSIX
Safe HaskellSafe
LanguageHaskell2010

Control.Monad.Backend

Description

Defines the BackendT transformer, which is a variant of the StateT transformer, such that the state is within an MVar.

Synopsis

Documentation

newtype BackendT s m a Source #

The BackendT transformer is a StateT, where the state is encapsulated into a MVar.

Constructors

BackendT (MVar s -> m (MVar s, a)) 

Instances

(Monad m, MonadIO m) => MonadState s (BackendT s m) Source # 

Methods

get :: BackendT s m s #

put :: s -> BackendT s m () #

state :: (s -> (a, s)) -> BackendT s m a #

Monad m => Monad (BackendT s m) Source # 

Methods

(>>=) :: BackendT s m a -> (a -> BackendT s m b) -> BackendT s m b #

(>>) :: BackendT s m a -> BackendT s m b -> BackendT s m b #

return :: a -> BackendT s m a #

fail :: String -> BackendT s m a #

Functor m => Functor (BackendT s m) Source # 

Methods

fmap :: (a -> b) -> BackendT s m a -> BackendT s m b #

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

Monad m => Applicative (BackendT s m) Source # 

Methods

pure :: a -> BackendT s m a #

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

(*>) :: BackendT s m a -> BackendT s m b -> BackendT s m b #

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

(Monad m, MonadIO m) => MonadIO (BackendT s m) Source # 

Methods

liftIO :: IO a -> BackendT s m a #

runBackendT :: BackendT s m a -> MVar s -> m (MVar s, a) Source #

runBackendT unwraps the BackendT monad.