Libraries.Template.Lifting

Abstract syntax trees of a simplified language

type Body

data Lit

data Pat

data Match

data Dec

data Exp

data BindS

doE

Variable substitution

getVarNames

substMatch

substDec

substExp

mapSubstExp

Downgrading Template Haskell to AST

litTHtoExpAST

litTHtoPatAST

normalizePatInExp

whereToLet

clauseToMatch

clausesToLambda

expTHtoAST

matchTHtoAST

bodyTHtoAST

patTHtoAST

firstLevelDecTHtoAST

decTHtoAST

Upgrade AST to Template Haskell

typReturnE

typMAppE

litASTtoTH

patASTtoTH

matchASTtoTH

decASTtoTH

expASTtoTH

Lifting AST terms (into AST terms)

liftIntegerL

liftRationalL

liftLitAST

liftPatAST

liftMatchAST

liftDecAST

liftFirstLevelDecAST

liftExpAST

makeDecTemplate

Various pretty printing functions

prettyPrintAST

prettyPrintLiftExpTH

prettyPrintLiftExpAST

The main lifting functions.

decToMonad

expToMonad