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

Safe HaskellNone
LanguageHaskell98

Language.Haskell.TH.Build

Contents

Synopsis

Documentation

class Convertible a b where Source

Methods

convert :: a -> b Source

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' -> ExpQ Source

Argument-converting wrapper for appE.

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

Argument-converting wrapper for appK.

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

Argument-converting wrapper for appT.

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

Argument-converting wrapper for appsE.

arithSeqE' :: Convertible rangeQ RangeQ => rangeQ -> ExpQ Source

Argument-converting wrapper for arithSeqE.

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

Argument-converting wrapper for asP.

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

Argument-converting wrapper for bangP.

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

Argument-converting wrapper for bindS.

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

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

Argument-converting wrapper for classD.

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

Argument-converting wrapper for classP.

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

Argument-converting wrapper for clause.

closedTypeFamilyKindD' :: (Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible kind Kind, Convertible tySynEqnQs [TySynEqnQ]) => name -> tyVarBndrs -> kind -> tySynEqnQs -> DecQ Source

Argument-converting wrapper for closedTypeFamilyKindD.

closedTypeFamilyNoKindD' :: (Convertible name Name, Convertible tyVarBndrs [TyVarBndr], Convertible tySynEqnQs [TySynEqnQ]) => name -> tyVarBndrs -> tySynEqnQs -> DecQ Source

Argument-converting wrapper for closedTypeFamilyNoKindD.

compE' :: Convertible stmtQs [StmtQ] => stmtQs -> ExpQ Source

Argument-converting wrapper for compE.

conE' :: Convertible name Name => name -> ExpQ Source

Argument-converting wrapper for conE.

conK' :: Convertible name Name => name -> Kind Source

Argument-converting wrapper for conK.

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

Argument-converting wrapper for conP.

conT' :: Convertible name Name => name -> TypeQ Source

Argument-converting wrapper for conT.

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

Argument-converting wrapper for condE.

cxt' :: Convertible predQs [PredQ] => predQs -> CxtQ Source

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

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

Argument-converting wrapper for dataInstD.

doE' :: Convertible stmtQs [StmtQ] => stmtQs -> ExpQ Source

Argument-converting wrapper for doE.

dyn' :: Convertible string String => string -> ExpQ Source

Argument-converting wrapper for dyn.

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

Argument-converting wrapper for equalP.

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

Argument-converting wrapper for familyKindD.

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

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

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

Argument-converting wrapper for forImpD.

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

Argument-converting wrapper for forallC.

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

Argument-converting wrapper for forallT.

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

Argument-converting wrapper for fromE.

fromR' :: Convertible expQ ExpQ => expQ -> RangeQ Source

Argument-converting wrapper for fromR.

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

Argument-converting wrapper for fromThenE.

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

Argument-converting wrapper for fromThenR.

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

Argument-converting wrapper for fromThenToE.

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

Argument-converting wrapper for fromThenToR.

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

Argument-converting wrapper for fromToE.

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

Argument-converting wrapper for fromToR.

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

Argument-converting wrapper for funD.

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

Argument-converting wrapper for funDep.

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

Argument-converting wrapper for guardedB.

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

Argument-converting wrapper for infixApp.

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

Argument-converting wrapper for infixC.

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

Argument-converting wrapper for infixE.

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

Argument-converting wrapper for infixLD.

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

Argument-converting wrapper for infixND.

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

Argument-converting wrapper for infixP.

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

Argument-converting wrapper for infixRD.

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

Argument-converting wrapper for instanceD.

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

Argument-converting wrapper for kindedTV.

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

Argument-converting wrapper for lam1E.

lamCaseE' :: Convertible matchQs [MatchQ] => matchQs -> ExpQ Source

Argument-converting wrapper for lamCaseE.

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

Argument-converting wrapper for lamE.

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

Argument-converting wrapper for letE.

letS' :: Convertible decQs [DecQ] => decQs -> StmtQ Source

Argument-converting wrapper for letS.

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

Argument-converting wrapper for listE.

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

Argument-converting wrapper for listP.

litE' :: Convertible lit Lit => lit -> ExpQ Source

Argument-converting wrapper for litE.

litP' :: Convertible lit Lit => lit -> PatQ Source

Argument-converting wrapper for litP.

litT' :: Convertible tyLitQ TyLitQ => tyLitQ -> TypeQ Source

Argument-converting wrapper for litT.

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

Argument-converting wrapper for match.

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

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

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

Argument-converting wrapper for newtypeInstD.

noBindS' :: Convertible expQ ExpQ => expQ -> StmtQ Source

Argument-converting wrapper for noBindS.

normalB' :: Convertible expQ ExpQ => expQ -> BodyQ Source

Argument-converting wrapper for normalB.

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

Argument-converting wrapper for normalC.

normalG' :: Convertible expQ ExpQ => expQ -> GuardQ Source

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

Argument-converting wrapper for numTyLit.

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

Argument-converting wrapper for parS.

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

Argument-converting wrapper for parensE.

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

Argument-converting wrapper for parensP.

patG' :: Convertible stmtQs [StmtQ] => stmtQs -> GuardQ Source

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

Argument-converting wrapper for plainTV.

pragAnnD' :: (Convertible annTarget AnnTarget, Convertible expQ ExpQ) => annTarget -> expQ -> DecQ Source

Argument-converting wrapper for pragAnnD.

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

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

Argument-converting wrapper for pragRuleD.

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

Argument-converting wrapper for pragSpecD.

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

Argument-converting wrapper for pragSpecInlD.

pragSpecInstD' :: Convertible typeQ TypeQ => typeQ -> DecQ Source

Argument-converting wrapper for pragSpecInstD.

promotedT' :: Convertible name Name => name -> TypeQ Source

Argument-converting wrapper for promotedT.

promotedTupleT' :: Convertible int Int => int -> TypeQ Source

Argument-converting wrapper for promotedTupleT.

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

Argument-converting wrapper for recC.

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

Argument-converting wrapper for recConE.

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

Argument-converting wrapper for recP.

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

Argument-converting wrapper for recUpdE.

roleAnnotD' :: (Convertible name Name, Convertible roles [Role]) => name -> roles -> DecQ Source

Argument-converting wrapper for roleAnnotD.

ruleVar' :: Convertible name Name => name -> RuleBndrQ Source

Argument-converting wrapper for ruleVar.

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

Argument-converting wrapper for sectionL.

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

Argument-converting wrapper for sectionR.

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

Argument-converting wrapper for sigD.

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

Argument-converting wrapper for sigE.

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

Argument-converting wrapper for sigP.

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

Argument-converting wrapper for sigT.

strTyLit' :: Convertible string String => string -> TyLitQ Source

Argument-converting wrapper for strTyLit.

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

Argument-converting wrapper for strictType.

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

Argument-converting wrapper for tildeP.

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

Argument-converting wrapper for tupE.

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

Argument-converting wrapper for tupP.

tupleK' :: Convertible int Int => int -> Kind Source

Argument-converting wrapper for tupleK.

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

Argument-converting wrapper for tySynD.

tySynEqn' :: (Convertible typeQs [TypeQ], Convertible typeQ TypeQ) => typeQs -> typeQ -> TySynEqnQ Source

Argument-converting wrapper for tySynEqn.

tySynInstD' :: (Convertible name Name, Convertible tySynEqnQ TySynEqnQ) => name -> tySynEqnQ -> DecQ Source

Argument-converting wrapper for tySynInstD.

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

Argument-converting wrapper for typedRuleVar.

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

Argument-converting wrapper for uInfixE.

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

Argument-converting wrapper for uInfixP.

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

Argument-converting wrapper for unboxedTupE.

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

Argument-converting wrapper for unboxedTupP.

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

Argument-converting wrapper for valD.

varE' :: Convertible name Name => name -> ExpQ Source

Argument-converting wrapper for varE.

varK' :: Convertible name Name => name -> Kind Source

Argument-converting wrapper for varK.

varP' :: Convertible name Name => name -> PatQ Source

Argument-converting wrapper for varP.

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

Argument-converting wrapper for varStrictType.

varT' :: Convertible name Name => name -> TypeQ Source

Argument-converting wrapper for varT.

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

Argument-converting wrapper for viewP.

Additional builder functions

getFieldE Source

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 -> ExpQ infixr 1 Source

class Arrows a b | a -> b, b -> a where Source

Methods

arrow :: a -> b -> b Source

(-->) :: (Convertible qa (Q a), Convertible qb (Q b), Arrows a b) => qa -> qb -> Q b infixr 1 Source

class Sigs a b c | c -> a b, a -> b c where Source

Methods

signature :: a -> b -> c Source

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

Variants without usually-empty parameters

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

Value decl without a where-clause

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

case match without a where-clause

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

Clause without a where-clause

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

data decl with no context

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

newtype decl with no context

Type restrictions of convert

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

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