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

Safe HaskellNone
LanguageHaskell2010

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

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 => Semantic (MONAD m) 
Monad m => Equality (MONAD m) 
Monad m => StringTree (MONAD m) 
Monad m => Render (MONAD m) 
Monad m => Eval (MONAD m) 
Constrained (MONAD m) 
Monad m => EvalBind (MONAD m) 
(AlphaEq dom dom dom env, Monad m) => AlphaEq (MONAD m) (MONAD m) dom env 
type Sat (MONAD m) = Top 

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

Projection with explicit monad type