syntactic-1.0.1: Generic abstract syntax, and utilities for embedded languages

Safe HaskellNone

Language.Syntactic.Frontend.Monad

Description

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).

Synopsis

Documentation

newtype Mon dom m a whereSource

User interface to embedded monadic programs

Constructors

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 

Fields

unMon :: forall r. (Monad m, Typeable r, InjectC (MONAD m) dom (m r)) => Cont (ASTF (HODomain dom Typeable) (m r)) a
 

Instances

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) 

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)Source

One-layer desugaring of monadic actions

sugarMonad :: (Monad m, Typeable1 m, Typeable a) => ASTF (HODomain dom Typeable) (m a) -> Mon dom m (ASTF (HODomain dom Typeable) a)Source

One-layer sugaring of monadic actions