transformers-supply-0.1.0: Supply applicative, monad, applicative transformer and monad transformer.

Portabilitynon-portable
Stabilityexperimental
MaintainerMerijn Verstraaten <merijn@inconsistent.nl>
Safe HaskellSafe-Inferred

Control.Monad.Supply.Class

Description

See Control.Monad.Supply for documentation.

Synopsis

Documentation

class Monad m => MonadSupply s f m | m -> s, m -> f whereSource

The MonadSupply class provides access to the functions needed to construct supply-consuming computations in a monad transformer stack.

Methods

supply :: (s -> f a) -> m aSource

Supply a construction function with an s value from the supply, the f in the function's type refers to the monad wrapped by SupplyT.

provide :: (s -> a) -> m aSource

Provide a non-monadic construction function with an s value from the supply and automatically lift its result into the f monad that SupplyT wraps.

Instances

MonadSupply s f m => MonadSupply s f (MaybeT m) 
MonadSupply s f m => MonadSupply s f (ListT m) 
MonadSupply s f m => MonadSupply s f (IdentityT m) 
(Monoid w, MonadSupply s f m) => MonadSupply s f (WriterT w m) 
(Monoid w, MonadSupply s f m) => MonadSupply s f (WriterT w m) 
MonadSupply s f m => MonadSupply s f (StateT s m) 
MonadSupply s f m => MonadSupply s f (StateT s m) 
MonadSupply s f m => MonadSupply s f (ReaderT r m) 
(Error e, MonadSupply s f m) => MonadSupply s f (ErrorT e m) 
MonadSupply s f m => MonadSupply s f (ContT r m) 
(Functor m, Monad m) => MonadSupply s m (SupplyT s m) 
(Monoid w, MonadSupply s f m) => MonadSupply s f (RWST r w s m) 
(Monoid w, MonadSupply s f m) => MonadSupply s f (RWST r w s m) 

demand :: MonadSupply s f m => m sSource

Demand an s value from the supply.