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

Safe HaskellSafe-Infered

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pragInlD' :: (Convertible name Name, Convertible inlineSpecQ InlineSpecQ) => name -> inlineSpecQ -> DecQSource

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

pragSpecInlD' :: (Convertible name Name, Convertible typeQ TypeQ, Convertible inlineSpecQ InlineSpecQ) => name -> typeQ -> inlineSpecQ -> DecQSource

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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