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

Safe HaskellNone

Language.Syntactic.Constructs.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

data MONAD m sig whereSource

Constructors

Return :: MONAD m (a :-> Full (m a)) 
Bind :: MONAD m (m a :-> ((a -> m b) :-> Full (m b))) 
Then :: MONAD m (m a :-> (m b :-> Full (m b))) 
When :: MONAD m (Bool :-> (m () :-> Full (m ()))) 

Instances

Monad m => Equality (MONAD m) 
(Render (MONAD m), Monad m) => ToTree (MONAD m) 
Monad m => Render (MONAD m) 
Monad m => Eval (MONAD m) 
Monad m => Semantic (MONAD m) 
Constrained (MONAD m) 
Monad m => EvalBind (MONAD m) 
(AlphaEq dom dom dom env, Monad m) => AlphaEq (MONAD m) (MONAD m) dom env 

prjMonad :: Project (MONAD m) sup => P m -> sup sig -> Maybe (MONAD m sig)Source

Projection with explicit monad type