Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Language.Haskell.TH.Lib contains lots of useful helper functions for generating and manipulating Template Haskell terms
Synopsis
- type InfoQ = Q Info
- type ExpQ = Q Exp
- type TExpQ (a :: TYPE r) = Q (TExp a)
- type CodeQ = Code Q
- type DecQ = Q Dec
- type DecsQ = Q [Dec]
- type ConQ = Q Con
- type TypeQ = Q Type
- type KindQ = Q Kind
- type TyLitQ = Q TyLit
- type CxtQ = Q Cxt
- type PredQ = Q Pred
- type DerivClauseQ = Q DerivClause
- 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 PatQ = Q Pat
- type FieldPatQ = Q FieldPat
- type RuleBndrQ = Q RuleBndr
- type TySynEqnQ = Q TySynEqn
- type PatSynDirQ = Q PatSynDir
- type PatSynArgsQ = Q PatSynArgs
- type FamilyResultSigQ = Q FamilyResultSig
- type DerivStrategyQ = Q DerivStrategy
- type TyVarBndrUnit = TyVarBndr ()
- type TyVarBndrSpec = TyVarBndr Specificity
- type TyVarBndrVis = TyVarBndr BndrVis
- intPrimL :: Integer -> Lit
- wordPrimL :: Integer -> Lit
- floatPrimL :: Rational -> Lit
- doublePrimL :: Rational -> Lit
- integerL :: Integer -> Lit
- rationalL :: Rational -> Lit
- charL :: Char -> Lit
- stringL :: String -> Lit
- stringPrimL :: [Word8] -> Lit
- charPrimL :: Char -> Lit
- bytesPrimL :: Bytes -> Lit
- mkBytes :: ForeignPtr Word8 -> Word -> Word -> Bytes
- litP :: Quote m => Lit -> m Pat
- varP :: Quote m => Name -> m Pat
- tupP :: Quote m => [m Pat] -> m Pat
- unboxedTupP :: Quote m => [m Pat] -> m Pat
- unboxedSumP :: Quote m => m Pat -> SumAlt -> SumArity -> m Pat
- conP :: Quote m => Name -> [m Pat] -> m Pat
- uInfixP :: Quote m => m Pat -> Name -> m Pat -> m Pat
- parensP :: Quote m => m Pat -> m Pat
- infixP :: Quote m => m Pat -> Name -> m Pat -> m Pat
- tildeP :: Quote m => m Pat -> m Pat
- bangP :: Quote m => m Pat -> m Pat
- asP :: Quote m => Name -> m Pat -> m Pat
- wildP :: Quote m => m Pat
- recP :: Quote m => Name -> [m FieldPat] -> m Pat
- listP :: Quote m => [m Pat] -> m Pat
- sigP :: Quote m => m Pat -> m Type -> m Pat
- viewP :: Quote m => m Exp -> m Pat -> m Pat
- typeP :: Quote m => m Type -> m Pat
- invisP :: Quote m => m Type -> m Pat
- fieldPat :: Quote m => Name -> m Pat -> m FieldPat
- normalB :: Quote m => m Exp -> m Body
- guardedB :: Quote m => [m (Guard, Exp)] -> m Body
- normalG :: Quote m => m Exp -> m Guard
- normalGE :: Quote m => m Exp -> m Exp -> m (Guard, Exp)
- patG :: Quote m => [m Stmt] -> m Guard
- patGE :: Quote m => [m Stmt] -> m Exp -> m (Guard, Exp)
- match :: Quote m => m Pat -> m Body -> [m Dec] -> m Match
- clause :: Quote m => [m Pat] -> m Body -> [m Dec] -> m Clause
- dyn :: Quote m => String -> m Exp
- varE :: Quote m => Name -> m Exp
- unboundVarE :: Quote m => Name -> m Exp
- labelE :: Quote m => String -> m Exp
- implicitParamVarE :: Quote m => String -> m Exp
- conE :: Quote m => Name -> m Exp
- litE :: Quote m => Lit -> m Exp
- staticE :: Quote m => m Exp -> m Exp
- appE :: Quote m => m Exp -> m Exp -> m Exp
- appTypeE :: Quote m => m Exp -> m Type -> m Exp
- uInfixE :: Quote m => m Exp -> m Exp -> m Exp -> m Exp
- parensE :: Quote m => m Exp -> m Exp
- infixE :: Quote m => Maybe (m Exp) -> m Exp -> Maybe (m Exp) -> m Exp
- infixApp :: Quote m => m Exp -> m Exp -> m Exp -> m Exp
- sectionL :: Quote m => m Exp -> m Exp -> m Exp
- sectionR :: Quote m => m Exp -> m Exp -> m Exp
- lamE :: Quote m => [m Pat] -> m Exp -> m Exp
- lam1E :: Quote m => m Pat -> m Exp -> m Exp
- lamCaseE :: Quote m => [m Match] -> m Exp
- lamCasesE :: Quote m => [m Clause] -> m Exp
- tupE :: Quote m => [m Exp] -> m Exp
- unboxedTupE :: Quote m => [m Exp] -> m Exp
- unboxedSumE :: Quote m => m Exp -> SumAlt -> SumArity -> m Exp
- condE :: Quote m => m Exp -> m Exp -> m Exp -> m Exp
- multiIfE :: Quote m => [m (Guard, Exp)] -> m Exp
- letE :: Quote m => [m Dec] -> m Exp -> m Exp
- caseE :: Quote m => m Exp -> [m Match] -> m Exp
- appsE :: Quote m => [m Exp] -> m Exp
- listE :: Quote m => [m Exp] -> m Exp
- sigE :: Quote m => m Exp -> m Type -> m Exp
- recConE :: Quote m => Name -> [m (Name, Exp)] -> m Exp
- recUpdE :: Quote m => m Exp -> [m (Name, Exp)] -> m Exp
- stringE :: Quote m => String -> m Exp
- fieldExp :: Quote m => Name -> m Exp -> m (Name, Exp)
- getFieldE :: Quote m => m Exp -> String -> m Exp
- projectionE :: Quote m => NonEmpty String -> m Exp
- typedSpliceE :: Quote m => m Exp -> m Exp
- typedBracketE :: Quote m => m Exp -> m Exp
- typeE :: Quote m => m Type -> m Exp
- fromE :: Quote m => m Exp -> m Exp
- fromThenE :: Quote m => m Exp -> m Exp -> m Exp
- fromToE :: Quote m => m Exp -> m Exp -> m Exp
- fromThenToE :: Quote m => m Exp -> m Exp -> m Exp -> m Exp
- arithSeqE :: Quote m => m Range -> m Exp
- fromR :: Quote m => m Exp -> m Range
- fromThenR :: Quote m => m Exp -> m Exp -> m Range
- fromToR :: Quote m => m Exp -> m Exp -> m Range
- fromThenToR :: Quote m => m Exp -> m Exp -> m Exp -> m Range
- doE :: Quote m => [m Stmt] -> m Exp
- mdoE :: Quote m => [m Stmt] -> m Exp
- compE :: Quote m => [m Stmt] -> m Exp
- bindS :: Quote m => m Pat -> m Exp -> m Stmt
- letS :: Quote m => [m Dec] -> m Stmt
- noBindS :: Quote m => m Exp -> m Stmt
- parS :: Quote m => [[m Stmt]] -> m Stmt
- recS :: Quote m => [m Stmt] -> m Stmt
- forallT :: Quote m => [TyVarBndr Specificity] -> m Cxt -> m Type -> m Type
- forallVisT :: Quote m => [m (TyVarBndr ())] -> m Type -> m Type
- varT :: Quote m => Name -> m Type
- conT :: Quote m => Name -> m Type
- appT :: Quote m => m Type -> m Type -> m Type
- appKindT :: Quote m => m Type -> m Kind -> m Type
- arrowT :: Quote m => m Type
- mulArrowT :: Quote m => m Type
- infixT :: Quote m => m Type -> Name -> m Type -> m Type
- uInfixT :: Quote m => m Type -> Name -> m Type -> m Type
- promotedInfixT :: Quote m => m Type -> Name -> m Type -> m Type
- promotedUInfixT :: Quote m => m Type -> Name -> m Type -> m Type
- parensT :: Quote m => m Type -> m Type
- equalityT :: Quote m => m Type
- listT :: Quote m => m Type
- tupleT :: Quote m => Int -> m Type
- unboxedTupleT :: Quote m => Int -> m Type
- unboxedSumT :: Quote m => SumArity -> m Type
- sigT :: Quote m => m Type -> Kind -> m Type
- litT :: Quote m => m TyLit -> m Type
- wildCardT :: Quote m => m Type
- promotedT :: Quote m => Name -> m Type
- promotedTupleT :: Quote m => Int -> m Type
- promotedNilT :: Quote m => m Type
- promotedConsT :: Quote m => m Type
- implicitParamT :: Quote m => String -> m Type -> m Type
- numTyLit :: Quote m => Integer -> m TyLit
- strTyLit :: Quote m => String -> m TyLit
- charTyLit :: Quote m => Char -> m TyLit
- noSourceUnpackedness :: Quote m => m SourceUnpackedness
- sourceNoUnpack :: Quote m => m SourceUnpackedness
- sourceUnpack :: Quote m => m SourceUnpackedness
- noSourceStrictness :: Quote m => m SourceStrictness
- sourceLazy :: Quote m => m SourceStrictness
- sourceStrict :: Quote m => m SourceStrictness
- isStrict :: Quote m => m Strict
- notStrict :: Quote m => m Strict
- unpacked :: Quote m => m Strict
- bang :: Quote m => m SourceUnpackedness -> m SourceStrictness -> m Bang
- bangType :: Quote m => m Bang -> m Type -> m BangType
- varBangType :: Quote m => Name -> m BangType -> m VarBangType
- strictType :: Quote m => m Strict -> m Type -> m StrictType
- varStrictType :: Quote m => Name -> m StrictType -> m VarStrictType
- cxt :: Quote m => [m Pred] -> m Cxt
- classP :: Quote m => Name -> [m Type] -> m Pred
- equalP :: Quote m => m Type -> m Type -> m Pred
- normalC :: Quote m => Name -> [m BangType] -> m Con
- recC :: Quote m => Name -> [m VarBangType] -> m Con
- infixC :: Quote m => m (Bang, Type) -> Name -> m (Bang, Type) -> m Con
- forallC :: Quote m => [TyVarBndr Specificity] -> m Cxt -> m Con -> m Con
- gadtC :: Quote m => [Name] -> [m StrictType] -> m Type -> m Con
- recGadtC :: Quote m => [Name] -> [m VarStrictType] -> m Type -> m Con
- varK :: Name -> Kind
- conK :: Name -> Kind
- tupleK :: Int -> Kind
- arrowK :: Kind
- listK :: Kind
- appK :: Kind -> Kind -> Kind
- starK :: Kind
- constraintK :: Kind
- class DefaultBndrFlag flag where
- defaultBndrFlag :: flag
- plainTV :: DefaultBndrFlag flag => Name -> TyVarBndr flag
- kindedTV :: DefaultBndrFlag flag => Name -> Kind -> TyVarBndr flag
- plainInvisTV :: Quote m => Name -> Specificity -> m (TyVarBndr Specificity)
- kindedInvisTV :: Quote m => Name -> Specificity -> m Kind -> m (TyVarBndr Specificity)
- plainBndrTV :: Quote m => Name -> BndrVis -> m (TyVarBndr BndrVis)
- kindedBndrTV :: Quote m => Name -> BndrVis -> m Kind -> m (TyVarBndr BndrVis)
- specifiedSpec :: Specificity
- inferredSpec :: Specificity
- bndrReq :: BndrVis
- bndrInvis :: BndrVis
- nominalR :: Role
- representationalR :: Role
- phantomR :: Role
- inferR :: Role
- valD :: Quote m => m Pat -> m Body -> [m Dec] -> m Dec
- funD :: Quote m => Name -> [m Clause] -> m Dec
- tySynD :: Quote m => Name -> [TyVarBndr BndrVis] -> m Type -> m Dec
- dataD :: Quote m => m Cxt -> Name -> [TyVarBndr BndrVis] -> Maybe Kind -> [m Con] -> [m DerivClause] -> m Dec
- newtypeD :: Quote m => m Cxt -> Name -> [TyVarBndr BndrVis] -> Maybe Kind -> m Con -> [m DerivClause] -> m Dec
- typeDataD :: Quote m => Name -> [TyVarBndr BndrVis] -> Maybe Kind -> [m Con] -> m Dec
- derivClause :: Quote m => Maybe DerivStrategy -> [m Pred] -> m DerivClause
- data DerivClause = DerivClause (Maybe DerivStrategy) Cxt
- stockStrategy :: Quote m => m DerivStrategy
- anyclassStrategy :: Quote m => m DerivStrategy
- newtypeStrategy :: Quote m => m DerivStrategy
- viaStrategy :: Quote m => m Type -> m DerivStrategy
- data DerivStrategy
- classD :: Quote m => m Cxt -> Name -> [TyVarBndr BndrVis] -> [FunDep] -> [m Dec] -> m Dec
- instanceD :: Quote m => m Cxt -> m Type -> [m Dec] -> m Dec
- instanceWithOverlapD :: Quote m => Maybe Overlap -> m Cxt -> m Type -> [m Dec] -> m Dec
- data Overlap
- sigD :: Quote m => Name -> m Type -> m Dec
- kiSigD :: Quote m => Name -> m Kind -> m Dec
- standaloneDerivD :: Quote m => m Cxt -> m Type -> m Dec
- standaloneDerivWithStrategyD :: Quote m => Maybe DerivStrategy -> m Cxt -> m Type -> m Dec
- defaultSigD :: Quote m => Name -> m Type -> m Dec
- roleAnnotD :: Quote m => Name -> [Role] -> m Dec
- dataFamilyD :: Quote m => Name -> [TyVarBndr BndrVis] -> Maybe Kind -> m Dec
- openTypeFamilyD :: Quote m => Name -> [TyVarBndr BndrVis] -> FamilyResultSig -> Maybe InjectivityAnn -> m Dec
- closedTypeFamilyD :: Quote m => Name -> [TyVarBndr BndrVis] -> FamilyResultSig -> Maybe InjectivityAnn -> [m TySynEqn] -> m Dec
- dataInstD :: Quote m => m Cxt -> Name -> [m Type] -> Maybe Kind -> [m Con] -> [m DerivClause] -> m Dec
- newtypeInstD :: Quote m => m Cxt -> Name -> [m Type] -> Maybe Kind -> m Con -> [m DerivClause] -> m Dec
- tySynInstD :: Quote m => m TySynEqn -> m Dec
- tySynEqn :: Quote m => Maybe [TyVarBndr ()] -> m Type -> m Type -> m TySynEqn
- injectivityAnn :: Name -> [Name] -> InjectivityAnn
- noSig :: FamilyResultSig
- kindSig :: Kind -> FamilyResultSig
- tyVarSig :: TyVarBndr () -> FamilyResultSig
- infixLD :: Quote m => Int -> Name -> m Dec
- infixRD :: Quote m => Int -> Name -> m Dec
- infixND :: Quote m => Int -> Name -> m Dec
- defaultD :: Quote m => [m Type] -> m Dec
- cCall :: Callconv
- stdCall :: Callconv
- cApi :: Callconv
- prim :: Callconv
- javaScript :: Callconv
- unsafe :: Safety
- safe :: Safety
- interruptible :: Safety
- forImpD :: Quote m => Callconv -> Safety -> String -> Name -> m Type -> m Dec
- funDep :: [Name] -> [Name] -> FunDep
- ruleVar :: Quote m => Name -> m RuleBndr
- typedRuleVar :: Quote m => Name -> m Type -> m RuleBndr
- valueAnnotation :: Name -> AnnTarget
- typeAnnotation :: Name -> AnnTarget
- moduleAnnotation :: AnnTarget
- pragInlD :: Quote m => Name -> Inline -> RuleMatch -> Phases -> m Dec
- pragSpecD :: Quote m => Name -> m Type -> Phases -> m Dec
- pragSpecInlD :: Quote m => Name -> m Type -> Inline -> Phases -> m Dec
- pragSpecInstD :: Quote m => m Type -> m Dec
- pragRuleD :: Quote m => String -> [m RuleBndr] -> m Exp -> m Exp -> Phases -> m Dec
- pragAnnD :: Quote m => AnnTarget -> m Exp -> m Dec
- pragLineD :: Quote m => Int -> String -> m Dec
- pragCompleteD :: Quote m => [Name] -> Maybe Name -> m Dec
- patSynD :: Quote m => Name -> m PatSynArgs -> m PatSynDir -> m Pat -> m Dec
- patSynSigD :: Quote m => Name -> m Type -> m Dec
- unidir :: Quote m => m PatSynDir
- implBidir :: Quote m => m PatSynDir
- explBidir :: Quote m => [m Clause] -> m PatSynDir
- prefixPatSyn :: Quote m => [Name] -> m PatSynArgs
- infixPatSyn :: Quote m => Name -> Name -> m PatSynArgs
- recordPatSyn :: Quote m => [Name] -> m PatSynArgs
- implicitParamBindD :: Quote m => String -> m Exp -> m Dec
- thisModule :: Q Module
- withDecDoc :: String -> Q Dec -> Q Dec
- withDecsDoc :: String -> Q [Dec] -> Q [Dec]
- funD_doc :: Name -> [Q Clause] -> Maybe String -> [Maybe String] -> Q Dec
- dataD_doc :: Q Cxt -> Name -> [Q (TyVarBndr BndrVis)] -> Maybe (Q Kind) -> [(Q Con, Maybe String, [Maybe String])] -> [Q DerivClause] -> Maybe String -> Q Dec
- newtypeD_doc :: Q Cxt -> Name -> [Q (TyVarBndr BndrVis)] -> Maybe (Q Kind) -> (Q Con, Maybe String, [Maybe String]) -> [Q DerivClause] -> Maybe String -> Q Dec
- typeDataD_doc :: Name -> [Q (TyVarBndr BndrVis)] -> Maybe (Q Kind) -> [(Q Con, Maybe String, [Maybe String])] -> Maybe String -> Q Dec
- dataInstD_doc :: Q Cxt -> Maybe [Q (TyVarBndr ())] -> Q Type -> Maybe (Q Kind) -> [(Q Con, Maybe String, [Maybe String])] -> [Q DerivClause] -> Maybe String -> Q Dec
- newtypeInstD_doc :: Q Cxt -> Maybe [Q (TyVarBndr ())] -> Q Type -> Maybe (Q Kind) -> (Q Con, Maybe String, [Maybe String]) -> [Q DerivClause] -> Maybe String -> Q Dec
- patSynD_doc :: Name -> Q PatSynArgs -> Q PatSynDir -> Q Pat -> Maybe String -> [Maybe String] -> Q Dec
Library functions
Abbreviations
type TExpQ (a :: TYPE r) = Q (TExp a) Source #
Representation-polymorphic since template-haskell-2.17.0.0.
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 TyVarBndrUnit = TyVarBndr () Source #
type TyVarBndrSpec = TyVarBndr Specificity Source #
type TyVarBndrVis = TyVarBndr BndrVis Source #
Constructors lifted to Q
Literals
floatPrimL :: Rational -> Lit Source #
doublePrimL :: Rational -> Lit Source #
stringPrimL :: [Word8] -> Lit Source #
bytesPrimL :: Bytes -> Lit Source #
:: ForeignPtr Word8 | Pointer to the data |
-> Word | Offset from the pointer |
-> Word | Number of bytes |
-> Bytes |
Create a Bytes datatype representing raw bytes to be embedded into the program/library binary.
Since: template-haskell-2.16.0.0
Patterns
Pattern Guards
Expressions
Ranges
Ranges with more indirection
Statements
Types
promotedNilT :: Quote m => m Type Source #
promotedConsT :: Quote m => m Type Source #
Type literals
Strictness
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.
Class Contexts
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
.
Constructors
Kinds
constraintK :: Kind Source #
Type variable binders
class DefaultBndrFlag flag where Source #
defaultBndrFlag :: flag Source #
Instances
DefaultBndrFlag BndrVis Source # | |
Defined in Language.Haskell.TH.Lib | |
DefaultBndrFlag Specificity Source # | |
Defined in Language.Haskell.TH.Lib | |
DefaultBndrFlag () Source # | |
Defined in Language.Haskell.TH.Lib defaultBndrFlag :: () Source # |
plainInvisTV :: Quote m => Name -> Specificity -> m (TyVarBndr Specificity) Source #
kindedInvisTV :: Quote m => Name -> Specificity -> m Kind -> m (TyVarBndr Specificity) Source #
Roles
representationalR :: Role Source #
Top Level Declarations
Data
dataD :: Quote m => m Cxt -> Name -> [TyVarBndr BndrVis] -> Maybe Kind -> [m Con] -> [m DerivClause] -> m Dec Source #
newtypeD :: Quote m => m Cxt -> Name -> [TyVarBndr BndrVis] -> Maybe Kind -> m Con -> [m DerivClause] -> m Dec Source #
derivClause :: Quote m => Maybe DerivStrategy -> [m Pred] -> m DerivClause Source #
data DerivClause Source #
A single deriving
clause at the end of a datatype.
DerivClause (Maybe DerivStrategy) Cxt | { deriving stock (Eq, Ord) } |
Instances
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 #
data DerivStrategy Source #
What the user explicitly requests when deriving an instance.
StockStrategy | A "standard" derived instance |
AnyclassStrategy | -XDeriveAnyClass |
NewtypeStrategy | -XGeneralizedNewtypeDeriving |
ViaStrategy Type | -XDerivingVia |
Instances
Data DerivStrategy Source # | |||||
Defined in Language.Haskell.TH.Syntax gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DerivStrategy -> c DerivStrategy # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DerivStrategy # toConstr :: DerivStrategy -> Constr # dataTypeOf :: DerivStrategy -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DerivStrategy) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DerivStrategy) # gmapT :: (forall b. Data b => b -> b) -> DerivStrategy -> DerivStrategy # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DerivStrategy -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DerivStrategy -> r # gmapQ :: (forall d. Data d => d -> u) -> DerivStrategy -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DerivStrategy -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy # | |||||
Generic DerivStrategy Source # | |||||
Defined in Language.Haskell.TH.Syntax
from :: DerivStrategy -> Rep DerivStrategy x # to :: Rep DerivStrategy x -> DerivStrategy # | |||||
Show DerivStrategy Source # | |||||
Defined in Language.Haskell.TH.Syntax showsPrec :: Int -> DerivStrategy -> ShowS # show :: DerivStrategy -> String # showList :: [DerivStrategy] -> ShowS # | |||||
Eq DerivStrategy Source # | |||||
Defined in Language.Haskell.TH.Syntax (==) :: DerivStrategy -> DerivStrategy -> Bool Source # (/=) :: DerivStrategy -> DerivStrategy -> Bool Source # | |||||
Ord DerivStrategy Source # | |||||
Defined in Language.Haskell.TH.Syntax compare :: DerivStrategy -> DerivStrategy -> Ordering Source # (<) :: DerivStrategy -> DerivStrategy -> Bool Source # (<=) :: DerivStrategy -> DerivStrategy -> Bool Source # (>) :: DerivStrategy -> DerivStrategy -> Bool Source # (>=) :: DerivStrategy -> DerivStrategy -> Bool Source # max :: DerivStrategy -> DerivStrategy -> DerivStrategy Source # min :: DerivStrategy -> DerivStrategy -> DerivStrategy Source # | |||||
type Rep DerivStrategy Source # | |||||
Defined in Language.Haskell.TH.Syntax type Rep DerivStrategy = D1 ('MetaData "DerivStrategy" "Language.Haskell.TH.Syntax" "template-haskell" 'False) ((C1 ('MetaCons "StockStrategy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AnyclassStrategy" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NewtypeStrategy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ViaStrategy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) |
Class
Varieties of allowed instance overlap.
Overlappable | May be overlapped by more specific instances |
Overlapping | May overlap a more general instance |
Overlaps | Both |
Incoherent | Both |
Instances
Data Overlap Source # | |||||
Defined in Language.Haskell.TH.Syntax gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Overlap -> c Overlap # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Overlap # toConstr :: Overlap -> Constr # dataTypeOf :: Overlap -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Overlap) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Overlap) # gmapT :: (forall b. Data b => b -> b) -> Overlap -> Overlap # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Overlap -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Overlap -> r # gmapQ :: (forall d. Data d => d -> u) -> Overlap -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Overlap -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap # | |||||
Generic Overlap Source # | |||||
Defined in Language.Haskell.TH.Syntax
| |||||
Show Overlap Source # | |||||
Eq Overlap Source # | |||||
Ord Overlap Source # | |||||
Defined in Language.Haskell.TH.Syntax | |||||
type Rep Overlap Source # | |||||
Defined in Language.Haskell.TH.Syntax type Rep Overlap = D1 ('MetaData "Overlap" "Language.Haskell.TH.Syntax" "template-haskell" 'False) ((C1 ('MetaCons "Overlappable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Overlapping" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Overlaps" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Incoherent" 'PrefixI 'False) (U1 :: Type -> Type))) |
standaloneDerivWithStrategyD :: Quote m => Maybe DerivStrategy -> m Cxt -> m Type -> m Dec Source #
Role annotations
Type Family / Data Family
openTypeFamilyD :: Quote m => Name -> [TyVarBndr BndrVis] -> FamilyResultSig -> Maybe InjectivityAnn -> m Dec Source #
closedTypeFamilyD :: Quote m => Name -> [TyVarBndr BndrVis] -> FamilyResultSig -> Maybe InjectivityAnn -> [m TySynEqn] -> m Dec Source #
dataInstD :: Quote m => m Cxt -> Name -> [m Type] -> Maybe Kind -> [m Con] -> [m DerivClause] -> m Dec Source #
newtypeInstD :: Quote m => m Cxt -> Name -> [m Type] -> Maybe Kind -> m Con -> [m DerivClause] -> m Dec Source #
injectivityAnn :: Name -> [Name] -> InjectivityAnn Source #
kindSig :: Kind -> FamilyResultSig Source #
tyVarSig :: TyVarBndr () -> FamilyResultSig Source #
Fixity
Default declaration
Foreign Function Interface (FFI)
Functional dependencies
Pragmas
valueAnnotation :: Name -> AnnTarget Source #
typeAnnotation :: Name -> AnnTarget Source #
Pattern Synonyms
patSynD :: Quote m => Name -> m PatSynArgs -> m PatSynDir -> m Pat -> m Dec Source #
Pattern synonym declaration
prefixPatSyn :: Quote m => [Name] -> m PatSynArgs Source #
infixPatSyn :: Quote m => Name -> Name -> m PatSynArgs Source #
recordPatSyn :: Quote m => [Name] -> m PatSynArgs Source #
Implicit Parameters
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.
Reify
thisModule :: Q Module Source #
pure the Module at the place of splicing. Can be used as an
input for reifyModule
.
Documentation
withDecDoc :: String -> Q Dec -> Q Dec Source #
Attaches Haddock documentation to the declaration provided. Unlike
putDoc
, the names do not need to be in scope when calling this function so
it can be used for quoted declarations and anything else currently being
spliced.
Not all declarations can have documentation attached to them. For those that
can't, withDecDoc
will return it unchanged without any side effects.
withDecsDoc :: String -> Q [Dec] -> Q [Dec] Source #
Variant of withDecDoc
that applies the same documentation to
multiple declarations. Useful for documenting quoted declarations.
:: Name | |
-> [Q Clause] | |
-> Maybe String | Documentation to attach to function |
-> [Maybe String] | Documentation to attach to arguments |
-> Q Dec |
Variant of funD
that attaches Haddock documentation.
:: Q Cxt | |
-> Name | |
-> [Q (TyVarBndr BndrVis)] | |
-> Maybe (Q Kind) | |
-> [(Q Con, Maybe String, [Maybe String])] | List of constructors, documentation for the constructor, and documentation for the arguments |
-> [Q DerivClause] | |
-> Maybe String | Documentation to attach to the data declaration |
-> Q Dec |
Variant of dataD
that attaches Haddock documentation.
:: Q Cxt | |
-> Name | |
-> [Q (TyVarBndr BndrVis)] | |
-> Maybe (Q Kind) | |
-> (Q Con, Maybe String, [Maybe String]) | The constructor, documentation for the constructor, and documentation for the arguments |
-> [Q DerivClause] | |
-> Maybe String | Documentation to attach to the newtype declaration |
-> Q Dec |
Variant of newtypeD
that attaches Haddock documentation.
:: Name | |
-> [Q (TyVarBndr BndrVis)] | |
-> Maybe (Q Kind) | |
-> [(Q Con, Maybe String, [Maybe String])] | List of constructors, documentation for the constructor, and documentation for the arguments |
-> Maybe String | Documentation to attach to the data declaration |
-> Q Dec |
Variant of typeDataD
that attaches Haddock documentation.
:: Q Cxt | |
-> Maybe [Q (TyVarBndr ())] | |
-> Q Type | |
-> Maybe (Q Kind) | |
-> [(Q Con, Maybe String, [Maybe String])] | List of constructors, documentation for the constructor, and documentation for the arguments |
-> [Q DerivClause] | |
-> Maybe String | Documentation to attach to the instance declaration |
-> Q Dec |
Variant of dataInstD
that attaches Haddock documentation.
:: Q Cxt | |
-> Maybe [Q (TyVarBndr ())] | |
-> Q Type | |
-> Maybe (Q Kind) | |
-> (Q Con, Maybe String, [Maybe String]) | The constructor, documentation for the constructor, and documentation for the arguments |
-> [Q DerivClause] | |
-> Maybe String | Documentation to attach to the instance declaration |
-> Q Dec |
Variant of newtypeInstD
that attaches Haddock documentation.