Safe Haskell | None |
---|
Monadic constructs
This module is based on the paper Generic Monadic Constructs for Embedded Languages (Persson et al., IFL 2011 http://www.cse.chalmers.se/~emax/documents/persson2011generic.pdf).
- newtype Mon dom m a where
- desugarMonad :: (InjectC (MONAD m) dom (m a), Monad m, Typeable1 m, Typeable a) => Mon dom m (ASTF (HODomain dom Typeable) a) -> ASTF (HODomain dom Typeable) (m a)
- sugarMonad :: (Monad m, Typeable1 m, Typeable a) => ASTF (HODomain dom Typeable) (m a) -> Mon dom m (ASTF (HODomain dom Typeable) a)
Documentation
newtype Mon dom m a whereSource
User interface to embedded monadic programs
Mon :: (forall r. (Monad m, Typeable r, InjectC (MONAD m) dom (m r)) => Cont (ASTF (HODomain dom Typeable) (m r)) a) -> Mon dom m a | |
Monad m => Monad (Mon dom m) | |
Functor (Mon dom m) | |
(Constrained (HODomain dom Typeable), Sat (HODomain dom Typeable) (Internal (Mon dom m a)), Syntactic a (HODomain dom Typeable), InjectC (MONAD m) dom (m (Internal a)), Monad m, Typeable1 m, Typeable (Internal a)) => Syntactic (Mon dom m a) (HODomain dom Typeable) |