Language.Haskell.TH.Lib.Internal
Language.Haskell.TH.Lib.Internal exposes some additional functionality that is used internally in GHC's integration with Template Haskell. This is not a part of the public API, and as such, there are no API guarantees for this module from version to version.
Type synonyms
type TExpQ (a :: TYPE r) = Q (TExp a) Source #
Levity-polymorphic since template-haskell-2.17.0.0. type TExpQ :: TYPE r -> Kind.Type
type DerivClauseQ = Q DerivClause Source #
type SourceStrictnessQ = Q SourceStrictness Source #
type VarBangTypeQ = Q VarBangType Source #
type StrictTypeQ = Q StrictType Source #
type VarStrictTypeQ = Q VarStrictType Source #
type PatSynDirQ = Q PatSynDir Source #
type PatSynArgsQ = Q PatSynArgs Source #
type FamilyResultSigQ = Q FamilyResultSig Source #
type DerivStrategyQ = Q DerivStrategy Source #
type InjectivityAnn = InjectivityAnn Source #
type TyVarBndrUnit = TyVarBndr () Source #
type TyVarBndrSpec = TyVarBndr Specificity Source #
Lowercase pattern syntax functions
floatPrimL :: Rational -> Lit Source #
doublePrimL :: Rational -> Lit Source #
stringPrimL :: [Word8] -> Lit Source #
bytesPrimL :: Bytes -> Lit Source #
Stmt
Range
Body
Guard
Match and Clause
Exp
arithSeqE
Shortcuts
Dec
dataD :: Quote m => m Cxt -> Name -> [m (TyVarBndr ())] -> Maybe (m Kind) -> [m Con] -> [m DerivClause] -> m Dec Source #
newtypeD :: Quote m => m Cxt -> Name -> [m (TyVarBndr ())] -> Maybe (m Kind) -> m Con -> [m DerivClause] -> m Dec Source #
pragRuleD :: Quote m => String -> Maybe [m (TyVarBndr ())] -> [m RuleBndr] -> m Exp -> m Exp -> Phases -> m Dec Source #
dataInstD :: Quote m => m Cxt -> Maybe [m (TyVarBndr ())] -> m Type -> Maybe (m Kind) -> [m Con] -> [m DerivClause] -> m Dec Source #
newtypeInstD :: Quote m => m Cxt -> Maybe [m (TyVarBndr ())] -> m Type -> Maybe (m Kind) -> m Con -> [m DerivClause] -> m Dec Source #
openTypeFamilyD :: Quote m => Name -> [m (TyVarBndr ())] -> m FamilyResultSig -> Maybe InjectivityAnn -> m Dec Source #
closedTypeFamilyD :: Quote m => Name -> [m (TyVarBndr ())] -> m FamilyResultSig -> Maybe InjectivityAnn -> [m TySynEqn] -> m Dec Source #
standaloneDerivWithStrategyD :: Quote m => Maybe (m DerivStrategy) -> m Cxt -> m Type -> m Dec Source #
patSynD :: Quote m => Name -> m PatSynArgs -> m PatSynDir -> m Pat -> m Dec Source #
Pattern synonym declaration
implicitParamBindD :: Quote m => String -> m Exp -> m Dec Source #
Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.
derivClause :: Quote m => Maybe (m DerivStrategy) -> [m Pred] -> m DerivClause Source #
stockStrategy :: Quote m => m DerivStrategy Source #
anyclassStrategy :: Quote m => m DerivStrategy Source #
newtypeStrategy :: Quote m => m DerivStrategy Source #
viaStrategy :: Quote m => m Type -> m DerivStrategy Source #
Type
equalP :: Quote m => m Type -> m Type -> m Pred Source #
Deprecated: As of template-haskell-2.10, constraint predicates (Pred) are just types (Type), in keeping with ConstraintKinds. Please see equalityT
.
promotedNilT :: Quote m => m Type Source #
promotedConsT :: Quote m => m Type Source #
noSourceUnpackedness :: Quote m => m SourceUnpackedness Source #
sourceNoUnpack :: Quote m => m SourceUnpackedness Source #
sourceUnpack :: Quote m => m SourceUnpackedness Source #
noSourceStrictness :: Quote m => m SourceStrictness Source #
sourceLazy :: Quote m => m SourceStrictness Source #
sourceStrict :: Quote m => m SourceStrictness Source #
isStrict :: Quote m => m Strict Source #
Deprecated: Use bang
. See https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.0. Example usage: 'bang noSourceUnpackedness sourceStrict'
notStrict :: Quote m => m Strict Source #
Deprecated: Use bang
. See https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.0. Example usage: 'bang noSourceUnpackedness noSourceStrictness'
unpacked :: Quote m => m Strict Source #
Deprecated: Use bang
. See https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.0. Example usage: 'bang sourceUnpack sourceStrict'
bang :: Quote m => m SourceUnpackedness -> m SourceStrictness -> m Bang Source #
varBangType :: Quote m => Name -> m BangType -> m VarBangType Source #
strictType :: Quote m => m Strict -> m Type -> m StrictType Source #
Deprecated: As of template-haskell-2.11.0.0
, StrictType
has been replaced by BangType
. Please use bangType
instead.
varStrictType :: Quote m => Name -> m StrictType -> m VarStrictType Source #
Deprecated: As of template-haskell-2.11.0.0
, VarStrictType
has been replaced by VarBangType
. Please use varBangType
instead.
Type Literals
Kind
plainInvisTV :: Quote m => Name -> Specificity -> m (TyVarBndr Specificity) Source #
kindedInvisTV :: Quote m => Name -> Specificity -> m Kind -> m (TyVarBndr Specificity) Source #
constraintK :: Quote m => m Kind Source #
Type family result
noSig :: Quote m => m FamilyResultSig Source #
Injectivity annotation
injectivityAnn :: Name -> [Name] -> InjectivityAnn Source #
Role
Callconv
Safety
FunDep
RuleBndr
AnnTarget
valueAnnotation :: Name -> AnnTarget Source #
typeAnnotation :: Name -> AnnTarget Source #
Pattern Synonyms (sub constructs)
prefixPatSyn :: Quote m => [Name] -> m PatSynArgs Source #
recordPatSyn :: Quote m => [Name] -> m PatSynArgs Source #
infixPatSyn :: Quote m => Name -> Name -> m PatSynArgs Source #
Useful helper function
thisModule :: Q Module Source #
pure the Module at the place of splicing. Can be used as an
input for reifyModule
.