monad-open-0.1.0.0: Open recursion for when you need it

Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Open.Class

Synopsis

Documentation

class Monad m => MonadOpen a b m | m -> a b where Source

To know MonadOpen a b m is to have a function a → m b which serves as a recursive call to the ambient open operation. The MonadOpen a b m judgement presupposes Monad m.

Methods

call :: a -> m b Source

A recursive call to the ambient open operation.

Instances

MonadOpen a b m => MonadOpen a b (MaybeT m) 
MonadOpen a b m => MonadOpen a b (ListT m) 
MonadOpen a b m => MonadOpen a b (IdentityT m) 
MonadOpen a b m => MonadOpen a b (ContT r m) 
MonadOpen a b m => MonadOpen a b (ExceptT e m) 
MonadOpen a b m => MonadOpen a b (StateT s m) 
MonadOpen a b m => MonadOpen a b (StateT s m) 
(Monoid w, MonadOpen a b m) => MonadOpen a b (WriterT w m) 
(Monoid w, MonadOpen a b m) => MonadOpen a b (WriterT w m) 
MonadOpen a b m => MonadOpen a b (ReaderT r m) 
Monad m => MonadOpen a b (OpenT a b m) 
(Monoid w, MonadOpen a b m) => MonadOpen a b (RWST r w s m) 
(Monoid w, MonadOpen a b m) => MonadOpen a b (RWST r w s m) 

newtype Op a m b Source

The type of open operations from a to b in modality m; when Alternative m is evident, then such operations may be composed horizontally via a Monoid instance.

Constructors

Op 

Fields

_op :: a -> m b
 

Instances

Alternative m => Monoid (Op a m b)