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

Safe HaskellNone

Language.Syntactic.Frontend.Monad

Synopsis

Documentation

newtype Mon ctx dom m a whereSource

User interface to embedded monadic programs

Constructors

Mon :: (forall r. (Monad m, Typeable r) => Cont (ASTF (HODomain ctx dom) (m r)) a) -> Mon ctx dom m a 

Fields

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

Instances

Monad m => Monad (Mon ctx dom m) 
Functor (Mon ctx dom m) 
(:<: (MONAD m) dom, Syntactic a (HODomain ctx dom), Monad m, Typeable1 m, Sat ctx (Internal a)) => Syntactic (Mon ctx dom m a) (HODomain ctx dom) 

desugarMonad :: (MONAD m :<: dom, Monad m, Typeable1 m, Typeable a, Sat ctx a) => Mon ctx dom m (ASTF (HODomain ctx dom) a) -> ASTF (HODomain ctx dom) (m a)Source

One-layer desugaring of monadic actions

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

One-layer sugaring of monadic actions