th-build-0.3.0.0: More convenient construction of TH ASTs

Safe HaskellNone

Language.Haskell.TH.Build

Contents

Synopsis

Documentation

class Convertible a b whereSource

Methods

convert :: a -> bSource

Instances

Convertible Integer ExpQ 
Convertible Integer BodyQ 
Convertible Integer Lit 
Convertible String ExpQ

conE or varE, determined by capitalization.

Convertible String TypeQ

conT or varT, determined by capitalization.

Convertible String StrictTypeQ 
Convertible String Name 
Convertible String PatQ

conP or varP, determined by capitalization.

Convertible String TyVarBndr 
Convertible String BodyQ 
Convertible ExpQ BodyQ

normalB

Convertible DecQ DecsQ 
Convertible TypeQ StrictTypeQ

Uses NotStrict.

Convertible Name ExpQ

conE or varE, determined by capitalization.

Convertible Name TypeQ

conT or varT, determined by capitalization.

Convertible Name StrictTypeQ 
Convertible Name PatQ

conP or varP, determined by capitalization.

Convertible Name TyVarBndr

PlainTV

Convertible Name BodyQ 
Convertible TyVarBndr TypeQ 
Convertible a a 
Convertible RangeQ ExpQ 
Convertible RangeQ BodyQ 
Convertible Lit ExpQ 
Convertible Lit BodyQ 
Convertible Integer [ExpQ] 
Convertible String [ExpQ]

A single conE or varE, determined by capitalization.

Convertible String [TypeQ]

A single conT or varT, determined by capitalization.

Convertible String [StrictTypeQ] 
Convertible String [PatQ]

A single conP or varP, determined by capitalization.

Convertible TypeQ [StrictTypeQ] 
Convertible Name [ExpQ]

A single conE or varE, determined by capitalization.

Convertible Name [TypeQ]

A single conT or varT, determined by capitalization.

Convertible Name [StrictTypeQ] 
Convertible Name [PatQ]

A single conP or varP, determined by capitalization.

Convertible Name [TyVarBndr] 
Convertible () [a]

Empty list

Convertible () (Q [a])

Empty list

Convertible () (Q (Maybe a))

Nothing

Convertible () (Maybe a)

Nothing

Convertible a [a]

Singleton

Convertible RangeQ [ExpQ] 
Convertible Lit [ExpQ] 
Convertible [DecQ] DecsQ

sequence

Convertible [PredQ] CxtQ

sequence

Convertible [DecsQ] DecsQ 
Convertible [Integer] [ExpQ] 
Convertible [String] [ExpQ] 
Convertible [String] [TypeQ] 
Convertible [String] [PatQ] 
Convertible [Name] [ExpQ] 
Convertible [Name] [TypeQ] 
Convertible [Name] [PatQ] 
Convertible [RangeQ] [ExpQ] 
Convertible [Lit] [ExpQ] 

Autoconverting wrappers around Language.Haskell.TH.Lib functions

appE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> ExpQSource

Argument-converting wrapper for appE.

appK' :: (Convertible kind Kind, Convertible kind' Kind) => kind -> kind' -> KindSource

Argument-converting wrapper for appK.

appT' :: (Convertible typeQ TypeQ, Convertible typeQ' TypeQ) => typeQ -> typeQ' -> TypeQSource

Argument-converting wrapper for appT.

appsE' :: Convertible expQs [ExpQ] => expQs -> ExpQSource

Argument-converting wrapper for appsE.

arithSeqE' :: Convertible rangeQ RangeQ => rangeQ -> ExpQSource

Argument-converting wrapper for arithSeqE.

asP' :: (Convertible name Name, Convertible patQ PatQ) => name -> patQ -> PatQSource

Argument-converting wrapper for asP.

bangP' :: Convertible patQ PatQ => patQ -> PatQSource

Argument-converting wrapper for bangP.

bindS' :: (Convertible patQ PatQ, Convertible expQ ExpQ) => patQ -> expQ -> StmtQSource

Argument-converting wrapper for bindS.

caseE' :: (Convertible expQ ExpQ, Convertible matchQs [MatchQ]) => expQ -> matchQs -> ExpQSource

Argument-converting wrapper for caseE.

classD' :: (Convertible cxtQ CxtQ, Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible funDeps [FunDep], Convertible decQs [DecQ]) => cxtQ -> name -> tyVarBndrs -> funDeps -> decQs -> DecQSource

Argument-converting wrapper for classD.

classP' :: (Convertible name Name, Convertible typeQs [TypeQ]) => name -> typeQs -> PredQSource

Argument-converting wrapper for classP.

clause' :: (Convertible patQs [PatQ], Convertible bodyQ BodyQ, Convertible decQs [DecQ]) => patQs -> bodyQ -> decQs -> ClauseQSource

Argument-converting wrapper for clause.

compE' :: Convertible stmtQs [StmtQ] => stmtQs -> ExpQSource

Argument-converting wrapper for compE.

conE' :: Convertible name Name => name -> ExpQSource

Argument-converting wrapper for conE.

conK' :: Convertible name Name => name -> KindSource

Argument-converting wrapper for conK.

conP' :: (Convertible name Name, Convertible patQs [PatQ]) => name -> patQs -> PatQSource

Argument-converting wrapper for conP.

conT' :: Convertible name Name => name -> TypeQSource

Argument-converting wrapper for conT.

condE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ, Convertible expQ'' ExpQ) => expQ -> expQ' -> expQ'' -> ExpQSource

Argument-converting wrapper for condE.

cxt' :: Convertible predQs [PredQ] => predQs -> CxtQSource

Argument-converting wrapper for cxt.

dataD' :: (Convertible cxtQ CxtQ, Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible conQs [ConQ], Convertible names [Name]) => cxtQ -> name -> tyVarBndrs -> conQs -> names -> DecQSource

Argument-converting wrapper for dataD.

dataInstD' :: (Convertible cxtQ CxtQ, Convertible name Name, Convertible typeQs [TypeQ], Convertible conQs [ConQ], Convertible names [Name]) => cxtQ -> name -> typeQs -> conQs -> names -> DecQSource

Argument-converting wrapper for dataInstD.

doE' :: Convertible stmtQs [StmtQ] => stmtQs -> ExpQSource

Argument-converting wrapper for doE.

dyn' :: Convertible string String => string -> Q ExpSource

Argument-converting wrapper for dyn.

equalP' :: (Convertible typeQ TypeQ, Convertible typeQ' TypeQ) => typeQ -> typeQ' -> PredQSource

Argument-converting wrapper for equalP.

familyKindD' :: (Convertible famFlavour FamFlavour, Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible kind Kind) => famFlavour -> name -> tyVarBndrs -> kind -> DecQSource

Argument-converting wrapper for familyKindD.

familyNoKindD' :: (Convertible famFlavour FamFlavour, Convertible name Name, Convertible tyVarBndrs [TyVarBndr]) => famFlavour -> name -> tyVarBndrs -> DecQSource

Argument-converting wrapper for familyNoKindD.

fieldExp' :: (Convertible name Name, Convertible expQ ExpQ) => name -> expQ -> Q (Name, Exp)Source

Argument-converting wrapper for fieldExp.

fieldPat' :: (Convertible name Name, Convertible patQ PatQ) => name -> patQ -> FieldPatQSource

Argument-converting wrapper for fieldPat.

forImpD' :: (Convertible callconv Callconv, Convertible safety Safety, Convertible string String, Convertible name Name, Convertible typeQ TypeQ) => callconv -> safety -> string -> name -> typeQ -> DecQSource

Argument-converting wrapper for forImpD.

forallC' :: (Convertible tyVarBndrs [TyVarBndr], Convertible cxtQ CxtQ, Convertible conQ ConQ) => tyVarBndrs -> cxtQ -> conQ -> ConQSource

Argument-converting wrapper for forallC.

forallT' :: (Convertible tyVarBndrs [TyVarBndr], Convertible cxtQ CxtQ, Convertible typeQ TypeQ) => tyVarBndrs -> cxtQ -> typeQ -> TypeQSource

Argument-converting wrapper for forallT.

fromE' :: Convertible expQ ExpQ => expQ -> ExpQSource

Argument-converting wrapper for fromE.

fromR' :: Convertible expQ ExpQ => expQ -> RangeQSource

Argument-converting wrapper for fromR.

fromThenE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> ExpQSource

Argument-converting wrapper for fromThenE.

fromThenR' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> RangeQSource

Argument-converting wrapper for fromThenR.

fromThenToE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ, Convertible expQ'' ExpQ) => expQ -> expQ' -> expQ'' -> ExpQSource

Argument-converting wrapper for fromThenToE.

fromThenToR' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ, Convertible expQ'' ExpQ) => expQ -> expQ' -> expQ'' -> RangeQSource

Argument-converting wrapper for fromThenToR.

fromToE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> ExpQSource

Argument-converting wrapper for fromToE.

fromToR' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> RangeQSource

Argument-converting wrapper for fromToR.

funD' :: (Convertible name Name, Convertible clauseQs [ClauseQ]) => name -> clauseQs -> DecQSource

Argument-converting wrapper for funD.

funDep' :: (Convertible names [Name], Convertible names' [Name]) => names -> names' -> FunDepSource

Argument-converting wrapper for funDep.

global' :: Convertible name Name => name -> ExpQSource

Argument-converting wrapper for global.

guardedB' :: Convertible guardedExpQs [Q (Guard, Exp)] => guardedExpQs -> BodyQSource

Argument-converting wrapper for guardedB.

infixApp' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ, Convertible expQ'' ExpQ) => expQ -> expQ' -> expQ'' -> ExpQSource

Argument-converting wrapper for infixApp.

infixC' :: (Convertible strictTypeQ (Q (Strict, Type)), Convertible name Name, Convertible strictTypeQ' (Q (Strict, Type))) => strictTypeQ -> name -> strictTypeQ' -> ConQSource

Argument-converting wrapper for infixC.

infixE' :: (Convertible maybeExpQ (Maybe ExpQ), Convertible expQ ExpQ, Convertible maybeExpQ' (Maybe ExpQ)) => maybeExpQ -> expQ -> maybeExpQ' -> ExpQSource

Argument-converting wrapper for infixE.

infixLD' :: (Convertible int Int, Convertible name Name) => int -> name -> DecQSource

Argument-converting wrapper for infixLD.

infixND' :: (Convertible int Int, Convertible name Name) => int -> name -> DecQSource

Argument-converting wrapper for infixND.

infixP' :: (Convertible patQ PatQ, Convertible name Name, Convertible patQ' PatQ) => patQ -> name -> patQ' -> PatQSource

Argument-converting wrapper for infixP.

infixRD' :: (Convertible int Int, Convertible name Name) => int -> name -> DecQSource

Argument-converting wrapper for infixRD.

instanceD' :: (Convertible cxtQ CxtQ, Convertible typeQ TypeQ, Convertible decQs [DecQ]) => cxtQ -> typeQ -> decQs -> DecQSource

Argument-converting wrapper for instanceD.

kindedTV' :: (Convertible name Name, Convertible kind Kind) => name -> kind -> TyVarBndrSource

Argument-converting wrapper for kindedTV.

lam1E' :: (Convertible patQ PatQ, Convertible expQ ExpQ) => patQ -> expQ -> ExpQSource

Argument-converting wrapper for lam1E.

lamCaseE' :: Convertible matchQs [MatchQ] => matchQs -> ExpQSource

Argument-converting wrapper for lamCaseE.

lamE' :: (Convertible patQs [PatQ], Convertible expQ ExpQ) => patQs -> expQ -> ExpQSource

Argument-converting wrapper for lamE.

letE' :: (Convertible decQs [DecQ], Convertible expQ ExpQ) => decQs -> expQ -> ExpQSource

Argument-converting wrapper for letE.

letS' :: Convertible decQs [DecQ] => decQs -> StmtQSource

Argument-converting wrapper for letS.

listE' :: Convertible expQs [ExpQ] => expQs -> ExpQSource

Argument-converting wrapper for listE.

listP' :: Convertible patQs [PatQ] => patQs -> PatQSource

Argument-converting wrapper for listP.

litE' :: Convertible lit Lit => lit -> ExpQSource

Argument-converting wrapper for litE.

litP' :: Convertible lit Lit => lit -> PatQSource

Argument-converting wrapper for litP.

litT' :: Convertible tyLitQ TyLitQ => tyLitQ -> TypeQSource

Argument-converting wrapper for litT.

match' :: (Convertible patQ PatQ, Convertible bodyQ BodyQ, Convertible decQs [DecQ]) => patQ -> bodyQ -> decQs -> MatchQSource

Argument-converting wrapper for match.

multiIfE' :: Convertible guardedExpQs [Q (Guard, Exp)] => guardedExpQs -> ExpQSource

Argument-converting wrapper for multiIfE.

newtypeD' :: (Convertible cxtQ CxtQ, Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible conQ ConQ, Convertible names [Name]) => cxtQ -> name -> tyVarBndrs -> conQ -> names -> DecQSource

Argument-converting wrapper for newtypeD.

newtypeInstD' :: (Convertible cxtQ CxtQ, Convertible name Name, Convertible typeQs [TypeQ], Convertible conQ ConQ, Convertible names [Name]) => cxtQ -> name -> typeQs -> conQ -> names -> DecQSource

Argument-converting wrapper for newtypeInstD.

noBindS' :: Convertible expQ ExpQ => expQ -> StmtQSource

Argument-converting wrapper for noBindS.

normalB' :: Convertible expQ ExpQ => expQ -> BodyQSource

Argument-converting wrapper for normalB.

normalC' :: (Convertible name Name, Convertible strictTypeQs [StrictTypeQ]) => name -> strictTypeQs -> ConQSource

Argument-converting wrapper for normalC.

normalG' :: Convertible expQ ExpQ => expQ -> GuardQSource

Argument-converting wrapper for normalG.

normalGE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> Q (Guard, Exp)Source

Argument-converting wrapper for normalGE.

numTyLit' :: Convertible integer Integer => integer -> TyLitQSource

Argument-converting wrapper for numTyLit.

parS' :: Convertible stmtQss [[StmtQ]] => stmtQss -> StmtQSource

Argument-converting wrapper for parS.

parensE' :: Convertible expQ ExpQ => expQ -> ExpQSource

Argument-converting wrapper for parensE.

parensP' :: Convertible patQ PatQ => patQ -> PatQSource

Argument-converting wrapper for parensP.

patG' :: Convertible stmtQs [StmtQ] => stmtQs -> GuardQSource

Argument-converting wrapper for patG.

patGE' :: (Convertible stmtQs [StmtQ], Convertible expQ ExpQ) => stmtQs -> expQ -> Q (Guard, Exp)Source

Argument-converting wrapper for patGE.

plainTV' :: Convertible name Name => name -> TyVarBndrSource

Argument-converting wrapper for plainTV.

pragInlD' :: (Convertible name Name, Convertible inline Inline, Convertible ruleMatch RuleMatch, Convertible phases Phases) => name -> inline -> ruleMatch -> phases -> DecQSource

Argument-converting wrapper for pragInlD.

pragRuleD' :: (Convertible string String, Convertible ruleBndrQs [RuleBndrQ], Convertible expQ ExpQ, Convertible expQ' ExpQ, Convertible phases Phases) => string -> ruleBndrQs -> expQ -> expQ' -> phases -> DecQSource

Argument-converting wrapper for pragRuleD.

pragSpecD' :: (Convertible name Name, Convertible typeQ TypeQ, Convertible phases Phases) => name -> typeQ -> phases -> DecQSource

Argument-converting wrapper for pragSpecD.

pragSpecInlD' :: (Convertible name Name, Convertible typeQ TypeQ, Convertible inline Inline, Convertible phases Phases) => name -> typeQ -> inline -> phases -> DecQSource

Argument-converting wrapper for pragSpecInlD.

pragSpecInstD' :: Convertible typeQ TypeQ => typeQ -> DecQSource

Argument-converting wrapper for pragSpecInstD.

promotedT' :: Convertible name Name => name -> TypeQSource

Argument-converting wrapper for promotedT.

promotedTupleT' :: Convertible int Int => int -> TypeQSource

Argument-converting wrapper for promotedTupleT.

recC' :: (Convertible name Name, Convertible varStrictTypeQs [VarStrictTypeQ]) => name -> varStrictTypeQs -> ConQSource

Argument-converting wrapper for recC.

recConE' :: (Convertible name Name, Convertible nameExpPairQs [Q (Name, Exp)]) => name -> nameExpPairQs -> ExpQSource

Argument-converting wrapper for recConE.

recP' :: (Convertible name Name, Convertible fieldPatQs [FieldPatQ]) => name -> fieldPatQs -> PatQSource

Argument-converting wrapper for recP.

recUpdE' :: (Convertible expQ ExpQ, Convertible nameExpPairQs [Q (Name, Exp)]) => expQ -> nameExpPairQs -> ExpQSource

Argument-converting wrapper for recUpdE.

ruleVar' :: Convertible name Name => name -> RuleBndrQSource

Argument-converting wrapper for ruleVar.

sectionL' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> ExpQSource

Argument-converting wrapper for sectionL.

sectionR' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ) => expQ -> expQ' -> ExpQSource

Argument-converting wrapper for sectionR.

sigD' :: (Convertible name Name, Convertible typeQ TypeQ) => name -> typeQ -> DecQSource

Argument-converting wrapper for sigD.

sigE' :: (Convertible expQ ExpQ, Convertible typeQ TypeQ) => expQ -> typeQ -> ExpQSource

Argument-converting wrapper for sigE.

sigP' :: (Convertible patQ PatQ, Convertible typeQ TypeQ) => patQ -> typeQ -> PatQSource

Argument-converting wrapper for sigP.

sigT' :: (Convertible typeQ TypeQ, Convertible kind Kind) => typeQ -> kind -> TypeQSource

Argument-converting wrapper for sigT.

strTyLit' :: Convertible string String => string -> TyLitQSource

Argument-converting wrapper for strTyLit.

strictType' :: (Convertible strictQ (Q Strict), Convertible typeQ TypeQ) => strictQ -> typeQ -> StrictTypeQSource

Argument-converting wrapper for strictType.

tildeP' :: Convertible patQ PatQ => patQ -> PatQSource

Argument-converting wrapper for tildeP.

tupE' :: Convertible expQs [ExpQ] => expQs -> ExpQSource

Argument-converting wrapper for tupE.

tupP' :: Convertible patQs [PatQ] => patQs -> PatQSource

Argument-converting wrapper for tupP.

tupleK' :: Convertible int Int => int -> KindSource

Argument-converting wrapper for tupleK.

tySynD' :: (Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible typeQ TypeQ) => name -> tyVarBndrs -> typeQ -> DecQSource

Argument-converting wrapper for tySynD.

tySynInstD' :: (Convertible name Name, Convertible typeQs [TypeQ], Convertible typeQ TypeQ) => name -> typeQs -> typeQ -> DecQSource

Argument-converting wrapper for tySynInstD.

typedRuleVar' :: (Convertible name Name, Convertible typeQ TypeQ) => name -> typeQ -> RuleBndrQSource

Argument-converting wrapper for typedRuleVar.

uInfixE' :: (Convertible expQ ExpQ, Convertible expQ' ExpQ, Convertible expQ'' ExpQ) => expQ -> expQ' -> expQ'' -> ExpQSource

Argument-converting wrapper for uInfixE.

uInfixP' :: (Convertible patQ PatQ, Convertible name Name, Convertible patQ' PatQ) => patQ -> name -> patQ' -> PatQSource

Argument-converting wrapper for uInfixP.

unboxedTupE' :: Convertible expQs [ExpQ] => expQs -> ExpQSource

Argument-converting wrapper for unboxedTupE.

unboxedTupP' :: Convertible patQs [PatQ] => patQs -> PatQSource

Argument-converting wrapper for unboxedTupP.

valD' :: (Convertible patQ PatQ, Convertible bodyQ BodyQ, Convertible decQs [DecQ]) => patQ -> bodyQ -> decQs -> DecQSource

Argument-converting wrapper for valD.

varE' :: Convertible name Name => name -> ExpQSource

Argument-converting wrapper for varE.

varK' :: Convertible name Name => name -> KindSource

Argument-converting wrapper for varK.

varP' :: Convertible name Name => name -> PatQSource

Argument-converting wrapper for varP.

varStrictType' :: (Convertible name Name, Convertible strictTypeQ StrictTypeQ) => name -> strictTypeQ -> VarStrictTypeQSource

Argument-converting wrapper for varStrictType.

varT' :: Convertible name Name => name -> TypeQSource

Argument-converting wrapper for varT.

viewP' :: (Convertible expQ ExpQ, Convertible patQ PatQ) => expQ -> patQ -> PatQSource

Argument-converting wrapper for viewP.

Additional builder functions

getFieldESource

Arguments

:: Convertible a Name 
=> a

Ctor name

-> Int

Ctor arity

-> Int

0-based index of field to get

-> Q Exp 

Sugar

(\->) :: (Convertible a [PatQ], Convertible a1 ExpQ) => a -> a1 -> ExpQSource

class Arrows a b | a -> b, b -> a whereSource

Methods

arrow :: a -> b -> bSource

(-->) :: (Convertible qa (Q a), Convertible qb (Q b), Arrows a b) => qa -> qb -> Q bSource

class Sigs a b c | c -> a b, a -> b c whereSource

Methods

signature :: a -> b -> cSource

(.::) :: (Convertible qa (Q a'), Convertible qb (Q b'), Sigs a' b' c) => qa -> qb -> Q cSource

Variants without usually-empty parameters

svalD :: (Convertible patQ PatQ, Convertible bodyQ BodyQ) => patQ -> bodyQ -> DecQSource

Value decl without a where-clause

smatch :: (Convertible patQ PatQ, Convertible bodyQ BodyQ) => patQ -> bodyQ -> MatchQSource

case match without a where-clause

sclause :: (Convertible patQs [PatQ], Convertible bodyQ BodyQ) => patQs -> bodyQ -> ClauseQSource

Clause without a where-clause

sdataD :: (Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible conQs [ConQ], Convertible names [Name]) => name -> tyVarBndrs -> conQs -> names -> DecQSource

data decl with no context

snewtypeD :: (Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible conQ ConQ, Convertible names [Name]) => name -> tyVarBndrs -> conQ -> names -> DecQSource

newtype decl with no context

Type restrictions of convert

expQs :: Convertible a [ExpQ] => a -> [ExpQ]Source

patQs :: Convertible a [PatQ] => a -> [PatQ]Source