| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Language.Haskell.TH.Lib
Contents
Description
TH.Lib contains lots of useful helper functions for generating and manipulating Template Haskell terms
- type InfoQ = Q Info
 - type PatQ = Q Pat
 - type FieldPatQ = Q FieldPat
 - type ExpQ = Q Exp
 - type TExpQ a = Q (TExp a)
 - type DecQ = Q Dec
 - type DecsQ = Q [Dec]
 - type ConQ = Q Con
 - type TypeQ = Q Type
 - type TyLitQ = Q TyLit
 - type CxtQ = Q Cxt
 - type PredQ = Q Pred
 - type MatchQ = Q Match
 - type ClauseQ = Q Clause
 - type BodyQ = Q Body
 - type GuardQ = Q Guard
 - type StmtQ = Q Stmt
 - type RangeQ = Q Range
 - type SourceStrictnessQ = Q SourceStrictness
 - type SourceUnpackednessQ = Q SourceUnpackedness
 - type BangQ = Q Bang
 - type BangTypeQ = Q BangType
 - type VarBangTypeQ = Q VarBangType
 - type StrictTypeQ = Q StrictType
 - type VarStrictTypeQ = Q VarStrictType
 - type FieldExpQ = Q FieldExp
 - type RuleBndrQ = Q RuleBndr
 - type TySynEqnQ = Q TySynEqn
 - type Role = Role
 - type InjectivityAnn = InjectivityAnn
 - intPrimL :: Integer -> Lit
 - wordPrimL :: Integer -> Lit
 - floatPrimL :: Rational -> Lit
 - doublePrimL :: Rational -> Lit
 - integerL :: Integer -> Lit
 - charL :: Char -> Lit
 - charPrimL :: Char -> Lit
 - stringL :: String -> Lit
 - stringPrimL :: [Word8] -> Lit
 - rationalL :: Rational -> Lit
 - litP :: Lit -> PatQ
 - varP :: Name -> PatQ
 - tupP :: [PatQ] -> PatQ
 - unboxedTupP :: [PatQ] -> PatQ
 - conP :: Name -> [PatQ] -> PatQ
 - infixP :: PatQ -> Name -> PatQ -> PatQ
 - uInfixP :: PatQ -> Name -> PatQ -> PatQ
 - parensP :: PatQ -> PatQ
 - tildeP :: PatQ -> PatQ
 - bangP :: PatQ -> PatQ
 - asP :: Name -> PatQ -> PatQ
 - wildP :: PatQ
 - recP :: Name -> [FieldPatQ] -> PatQ
 - listP :: [PatQ] -> PatQ
 - sigP :: PatQ -> TypeQ -> PatQ
 - viewP :: ExpQ -> PatQ -> PatQ
 - fieldPat :: Name -> PatQ -> FieldPatQ
 - bindS :: PatQ -> ExpQ -> StmtQ
 - letS :: [DecQ] -> StmtQ
 - noBindS :: ExpQ -> StmtQ
 - parS :: [[StmtQ]] -> StmtQ
 - fromR :: ExpQ -> RangeQ
 - fromThenR :: ExpQ -> ExpQ -> RangeQ
 - fromToR :: ExpQ -> ExpQ -> RangeQ
 - fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ
 - normalB :: ExpQ -> BodyQ
 - guardedB :: [Q (Guard, Exp)] -> BodyQ
 - normalG :: ExpQ -> GuardQ
 - normalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)
 - patG :: [StmtQ] -> GuardQ
 - patGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)
 - match :: PatQ -> BodyQ -> [DecQ] -> MatchQ
 - clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ
 - dyn :: String -> ExpQ
 - varE :: Name -> ExpQ
 - conE :: Name -> ExpQ
 - litE :: Lit -> ExpQ
 - appE :: ExpQ -> ExpQ -> ExpQ
 - parensE :: ExpQ -> ExpQ
 - uInfixE :: ExpQ -> ExpQ -> ExpQ -> ExpQ
 - infixE :: Maybe ExpQ -> ExpQ -> Maybe ExpQ -> ExpQ
 - infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ
 - sectionL :: ExpQ -> ExpQ -> ExpQ
 - sectionR :: ExpQ -> ExpQ -> ExpQ
 - lamE :: [PatQ] -> ExpQ -> ExpQ
 - lam1E :: PatQ -> ExpQ -> ExpQ
 - lamCaseE :: [MatchQ] -> ExpQ
 - tupE :: [ExpQ] -> ExpQ
 - unboxedTupE :: [ExpQ] -> ExpQ
 - condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ
 - multiIfE :: [Q (Guard, Exp)] -> ExpQ
 - letE :: [DecQ] -> ExpQ -> ExpQ
 - caseE :: ExpQ -> [MatchQ] -> ExpQ
 - doE :: [StmtQ] -> ExpQ
 - compE :: [StmtQ] -> ExpQ
 - arithSeqE :: RangeQ -> ExpQ
 - listE :: [ExpQ] -> ExpQ
 - sigE :: ExpQ -> TypeQ -> ExpQ
 - recConE :: Name -> [Q (Name, Exp)] -> ExpQ
 - recUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ
 - stringE :: String -> ExpQ
 - fieldExp :: Name -> ExpQ -> Q (Name, Exp)
 - staticE :: ExpQ -> ExpQ
 - unboundVarE :: Name -> ExpQ
 - fromE :: ExpQ -> ExpQ
 - fromThenE :: ExpQ -> ExpQ -> ExpQ
 - fromToE :: ExpQ -> ExpQ -> ExpQ
 - fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ
 - valD :: PatQ -> BodyQ -> [DecQ] -> DecQ
 - funD :: Name -> [ClauseQ] -> DecQ
 - tySynD :: Name -> [TyVarBndr] -> TypeQ -> DecQ
 - dataD :: CxtQ -> Name -> [TyVarBndr] -> Maybe Kind -> [ConQ] -> CxtQ -> DecQ
 - newtypeD :: CxtQ -> Name -> [TyVarBndr] -> Maybe Kind -> ConQ -> CxtQ -> DecQ
 - classD :: CxtQ -> Name -> [TyVarBndr] -> [FunDep] -> [DecQ] -> DecQ
 - instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ
 - instanceWithOverlapD :: Maybe Overlap -> CxtQ -> TypeQ -> [DecQ] -> DecQ
 - sigD :: Name -> TypeQ -> DecQ
 - forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQ
 - infixLD :: Int -> Name -> DecQ
 - infixRD :: Int -> Name -> DecQ
 - infixND :: Int -> Name -> DecQ
 - pragInlD :: Name -> Inline -> RuleMatch -> Phases -> DecQ
 - pragSpecD :: Name -> TypeQ -> Phases -> DecQ
 - pragSpecInlD :: Name -> TypeQ -> Inline -> Phases -> DecQ
 - pragSpecInstD :: TypeQ -> DecQ
 - pragRuleD :: String -> [RuleBndrQ] -> ExpQ -> ExpQ -> Phases -> DecQ
 - pragAnnD :: AnnTarget -> ExpQ -> DecQ
 - pragLineD :: Int -> String -> DecQ
 - dataInstD :: CxtQ -> Name -> [TypeQ] -> Maybe Kind -> [ConQ] -> CxtQ -> DecQ
 - newtypeInstD :: CxtQ -> Name -> [TypeQ] -> Maybe Kind -> ConQ -> CxtQ -> DecQ
 - tySynInstD :: Name -> TySynEqnQ -> DecQ
 - dataFamilyD :: Name -> [TyVarBndr] -> Maybe Kind -> DecQ
 - openTypeFamilyD :: Name -> [TyVarBndr] -> FamilyResultSig -> Maybe InjectivityAnn -> DecQ
 - closedTypeFamilyD :: Name -> [TyVarBndr] -> FamilyResultSig -> Maybe InjectivityAnn -> [TySynEqnQ] -> DecQ
 - familyNoKindD :: FamFlavour -> Name -> [TyVarBndr] -> DecQ
 - familyKindD :: FamFlavour -> Name -> [TyVarBndr] -> Kind -> DecQ
 - closedTypeFamilyNoKindD :: Name -> [TyVarBndr] -> [TySynEqnQ] -> DecQ
 - closedTypeFamilyKindD :: Name -> [TyVarBndr] -> Kind -> [TySynEqnQ] -> DecQ
 - roleAnnotD :: Name -> [Role] -> DecQ
 - standaloneDerivD :: CxtQ -> TypeQ -> DecQ
 - defaultSigD :: Name -> TypeQ -> DecQ
 - tySynEqn :: [TypeQ] -> TypeQ -> TySynEqnQ
 - cxt :: [PredQ] -> CxtQ
 - normalC :: Name -> [BangTypeQ] -> ConQ
 - recC :: Name -> [VarBangTypeQ] -> ConQ
 - infixC :: Q (Bang, Type) -> Name -> Q (Bang, Type) -> ConQ
 - forallC :: [TyVarBndr] -> CxtQ -> ConQ -> ConQ
 - gadtC :: [Name] -> [StrictTypeQ] -> TypeQ -> ConQ
 - recGadtC :: [Name] -> [VarStrictTypeQ] -> TypeQ -> ConQ
 - forallT :: [TyVarBndr] -> CxtQ -> TypeQ -> TypeQ
 - varT :: Name -> TypeQ
 - conT :: Name -> TypeQ
 - infixT :: TypeQ -> Name -> TypeQ -> TypeQ
 - uInfixT :: TypeQ -> Name -> TypeQ -> TypeQ
 - parensT :: TypeQ -> TypeQ
 - appT :: TypeQ -> TypeQ -> TypeQ
 - arrowT :: TypeQ
 - listT :: TypeQ
 - litT :: TyLitQ -> TypeQ
 - tupleT :: Int -> TypeQ
 - unboxedTupleT :: Int -> TypeQ
 - sigT :: TypeQ -> Kind -> TypeQ
 - equalityT :: TypeQ
 - wildCardT :: TypeQ
 - classP :: Name -> [Q Type] -> Q Pred
 - equalP :: TypeQ -> TypeQ -> PredQ
 - promotedT :: Name -> TypeQ
 - promotedTupleT :: Int -> TypeQ
 - promotedNilT :: TypeQ
 - promotedConsT :: TypeQ
 - noSourceUnpackedness :: SourceUnpackednessQ
 - sourceNoUnpack :: SourceUnpackednessQ
 - sourceUnpack :: SourceUnpackednessQ
 - noSourceStrictness :: SourceStrictnessQ
 - sourceLazy :: SourceStrictnessQ
 - sourceStrict :: SourceStrictnessQ
 - isStrict :: Q Strict
 - notStrict :: Q Strict
 - unpacked :: Q Strict
 - bang :: SourceUnpackednessQ -> SourceStrictnessQ -> BangQ
 - bangType :: BangQ -> TypeQ -> BangTypeQ
 - varBangType :: Name -> BangTypeQ -> VarBangTypeQ
 - strictType :: Q Strict -> TypeQ -> StrictTypeQ
 - varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ
 - numTyLit :: Integer -> TyLitQ
 - strTyLit :: String -> TyLitQ
 - plainTV :: Name -> TyVarBndr
 - kindedTV :: Name -> Kind -> TyVarBndr
 - varK :: Name -> Kind
 - conK :: Name -> Kind
 - tupleK :: Int -> Kind
 - arrowK :: Kind
 - listK :: Kind
 - appK :: Kind -> Kind -> Kind
 - starK :: Kind
 - constraintK :: Kind
 - noSig :: FamilyResultSig
 - kindSig :: Kind -> FamilyResultSig
 - tyVarSig :: TyVarBndr -> FamilyResultSig
 - injectivityAnn :: Name -> [Name] -> InjectivityAnn
 - nominalR :: Role
 - representationalR :: Role
 - phantomR :: Role
 - inferR :: Role
 - cCall :: Callconv
 - stdCall :: Callconv
 - cApi :: Callconv
 - prim :: Callconv
 - javaScript :: Callconv
 - unsafe :: Safety
 - safe :: Safety
 - interruptible :: Safety
 - funDep :: [Name] -> [Name] -> FunDep
 - typeFam :: FamFlavour
 - dataFam :: FamFlavour
 - ruleVar :: Name -> RuleBndrQ
 - typedRuleVar :: Name -> TypeQ -> RuleBndrQ
 - valueAnnotation :: Name -> AnnTarget
 - typeAnnotation :: Name -> AnnTarget
 - moduleAnnotation :: AnnTarget
 - appsE :: [ExpQ] -> ExpQ
 - thisModule :: Q Module
 
Type synonyms
type SourceStrictnessQ = Q SourceStrictness Source #
type VarBangTypeQ = Q VarBangType Source #
type StrictTypeQ = Q StrictType Source #
type VarStrictTypeQ = Q VarStrictType Source #
type InjectivityAnn = InjectivityAnn Source #
Lowercase pattern syntax functions
floatPrimL :: Rational -> Lit Source #
doublePrimL :: Rational -> Lit Source #
stringPrimL :: [Word8] -> Lit Source #
unboxedTupP :: [PatQ] -> PatQ Source #
Stmt
Range
Body
Guard
Match and Clause
Exp
unboxedTupE :: [ExpQ] -> ExpQ Source #
unboundVarE :: Name -> ExpQ Source #
arithSeqE Shortcuts
Dec
pragSpecInstD :: TypeQ -> DecQ Source #
openTypeFamilyD :: Name -> [TyVarBndr] -> FamilyResultSig -> Maybe InjectivityAnn -> DecQ Source #
closedTypeFamilyD :: Name -> [TyVarBndr] -> FamilyResultSig -> Maybe InjectivityAnn -> [TySynEqnQ] -> DecQ Source #
familyNoKindD :: FamFlavour -> Name -> [TyVarBndr] -> DecQ Source #
Deprecated: This function will be removed in the next stable release. Use openTypeFamilyD/dataFamilyD instead.
familyKindD :: FamFlavour -> Name -> [TyVarBndr] -> Kind -> DecQ Source #
Deprecated: This function will be removed in the next stable release. Use openTypeFamilyD/dataFamilyD instead.
closedTypeFamilyNoKindD :: Name -> [TyVarBndr] -> [TySynEqnQ] -> DecQ Source #
Deprecated: This function will be removed in the next stable release. Use closedTypeFamilyD instead.
closedTypeFamilyKindD :: Name -> [TyVarBndr] -> Kind -> [TySynEqnQ] -> DecQ Source #
Deprecated: This function will be removed in the next stable release. Use closedTypeFamilyD instead.
Type
unboxedTupleT :: Int -> TypeQ Source #
equalP :: TypeQ -> TypeQ -> PredQ Source #
Deprecated: As of template-haskell-2.10, constraint predicates (Pred) are just types (Type), in keeping with ConstraintKinds. Please see equalityT.
promotedTupleT :: Int -> TypeQ Source #
promotedNilT :: TypeQ Source #
Deprecated: Use bang. See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0. Example usage: 'bang noSourceUnpackedness sourceStrict'
notStrict :: Q Strict Source #
Deprecated: Use bang. See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0. Example usage: 'bang noSourceUnpackedness noSourceStrictness'
Deprecated: Use bang. See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0. Example usage: 'bang sourceUnpack sourceStrict'
bang :: SourceUnpackednessQ -> SourceStrictnessQ -> BangQ Source #
varBangType :: Name -> BangTypeQ -> VarBangTypeQ Source #
strictType :: Q Strict -> TypeQ -> StrictTypeQ Source #
Deprecated: As of template-haskell-2.11.0.0, StrictType has been replaced by BangType. Please use bangType instead.
varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ Source #
Deprecated: As of template-haskell-2.11.0.0, VarStrictType has been replaced by VarBangType. Please use varBangType instead.
Type Literals
Kind
constraintK :: Kind Source #
Type family result
kindSig :: Kind -> FamilyResultSig Source #
tyVarSig :: TyVarBndr -> FamilyResultSig Source #
Injectivity annotation
injectivityAnn :: Name -> [Name] -> InjectivityAnn Source #
Role
Callconv
Safety
FunDep
FamFlavour
typeFam :: FamFlavour Source #
dataFam :: FamFlavour Source #
RuleBndr
AnnTarget
valueAnnotation :: Name -> AnnTarget Source #
typeAnnotation :: Name -> AnnTarget Source #
Useful helper function
thisModule :: Q Module Source #
Return the Module at the place of splicing.  Can be used as an
 input for reifyModule.