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

Safe HaskellNone



Provides a simple way to make syntactic constructs for prototyping. Note that Construct is quite unsafe as it only uses String to distinguish between different constructs. Also, Construct has a very free type that allows any number of arguments.


data Construct ctx a whereSource


Construct :: (Signature a, Sat ctx (DenResult a)) => String -> Denotation a -> Construct ctx a 


MaybeWitnessSat ctx1 (Construct ctx2) 
MaybeWitnessSat ctx (Construct ctx) 
WitnessSat (Construct ctx) 
WitnessCons (Construct ctx) 
ExprEq (Construct ctx) 
ToTree (Construct ctx) 
Render (Construct ctx) 
Eval (Construct ctx) 
EvalBind (Construct ctx) 
(:<: (Construct ctx') dom, Optimize dom ctx dom) => Optimize (Construct ctx') ctx dom 
AlphaEq dom dom dom env => AlphaEq (Construct ctx) (Construct ctx) dom env