Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Language.Haskell.TH.Lib
Description
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
- forallE :: Quote m => [m (TyVarBndr Specificity)] -> m Exp -> m Exp
- forallVisE :: Quote m => [m (TyVarBndr ())] -> m Exp -> m Exp
- constrainedE :: Quote m => [m Exp] -> m Exp -> 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 DerivClauseQ = Q DerivClause #
type SourceStrictnessQ = Q SourceStrictness #
type SourceUnpackednessQ = Q SourceUnpackedness #
type VarBangTypeQ = Q VarBangType #
type StrictTypeQ = Q StrictType #
type VarStrictTypeQ = Q VarStrictType #
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 #
Constructors lifted to Q
Literals
floatPrimL :: Rational -> Lit #
doublePrimL :: Rational -> Lit #
stringPrimL :: [Word8] -> Lit #
bytesPrimL :: Bytes -> Lit #
Arguments
:: 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: 2.16.0.0
Patterns
unboxedTupP :: Quote m => [m Pat] -> m Pat #
Pattern Guards
Expressions
unboundVarE :: Quote m => Name -> m Exp #
implicitParamVarE :: Quote m => String -> m Exp #
typedSpliceE :: Quote m => m Exp -> m Exp #
typedBracketE :: Quote m => m Exp -> m Exp #
Ranges
Ranges with more indirection
Statements
Types
unboxedTupleT :: Quote m => Int -> m Type #
unboxedSumT :: Quote m => SumArity -> m Type #
promotedTupleT :: Quote m => Int -> m Type #
promotedNilT :: Quote m => m Type #
promotedConsT :: Quote m => m Type #
Type literals
Strictness
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 #
Deprecated: Use bang
. See https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.0. Example usage: 'bang noSourceUnpackedness sourceStrict'
notStrict :: Quote m => m Strict #
Deprecated: Use bang
. See https://gitlab.haskell.org/ghc/ghc/wikis/migration/8.0. Example usage: 'bang noSourceUnpackedness noSourceStrictness'
unpacked :: Quote m => m Strict #
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 #
varBangType :: Quote m => Name -> m BangType -> m VarBangType #
strictType :: Quote m => m Strict -> m Type -> m StrictType #
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 #
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 #
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 #
Methods
defaultBndrFlag :: flag Source #
Instances
DefaultBndrFlag BndrVis Source # | |
Defined in Language.Haskell.TH.Lib Methods | |
DefaultBndrFlag Specificity Source # | |
Defined in Language.Haskell.TH.Lib Methods | |
DefaultBndrFlag () Source # | |
Defined in Language.Haskell.TH.Lib Methods defaultBndrFlag :: () Source # |
plainInvisTV :: Quote m => Name -> Specificity -> m (TyVarBndr Specificity) #
kindedInvisTV :: Quote m => Name -> Specificity -> m Kind -> m (TyVarBndr Specificity) #
Roles
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 #
A single deriving
clause at the end of a datatype declaration.
Constructors
DerivClause (Maybe DerivStrategy) Cxt | { deriving stock (Eq, Ord) } |
Instances
stockStrategy :: Quote m => m DerivStrategy #
anyclassStrategy :: Quote m => m DerivStrategy #
newtypeStrategy :: Quote m => m DerivStrategy #
viaStrategy :: Quote m => m Type -> m DerivStrategy #
data DerivStrategy #
What the user explicitly requests when deriving an instance with
-XDerivingStrategies
.
Constructors
StockStrategy | deriving {stock} C |
AnyclassStrategy |
|
NewtypeStrategy |
|
ViaStrategy Type |
|
Instances
Data DerivStrategy # | |||||
Defined in GHC.Internal.TH.Syntax Methods 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 # | |||||
Defined in GHC.Internal.TH.Syntax Associated Types
| |||||
Show DerivStrategy # | |||||
Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> DerivStrategy -> ShowS # show :: DerivStrategy -> String # showList :: [DerivStrategy] -> ShowS # | |||||
Eq DerivStrategy # | |||||
Defined in GHC.Internal.TH.Syntax Methods (==) :: DerivStrategy -> DerivStrategy -> Bool # (/=) :: DerivStrategy -> DerivStrategy -> Bool # | |||||
Ord DerivStrategy # | |||||
Defined in GHC.Internal.TH.Syntax Methods compare :: DerivStrategy -> DerivStrategy -> Ordering # (<) :: DerivStrategy -> DerivStrategy -> Bool # (<=) :: DerivStrategy -> DerivStrategy -> Bool # (>) :: DerivStrategy -> DerivStrategy -> Bool # (>=) :: DerivStrategy -> DerivStrategy -> Bool # max :: DerivStrategy -> DerivStrategy -> DerivStrategy # min :: DerivStrategy -> DerivStrategy -> DerivStrategy # | |||||
Lift DerivStrategy # | Since: 2.22.1.0 | ||||
Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DerivStrategy -> m Exp # liftTyped :: forall (m :: Type -> Type). Quote m => DerivStrategy -> Code m DerivStrategy # | |||||
type Rep DerivStrategy # | |||||
Defined in GHC.Internal.TH.Syntax type Rep DerivStrategy = D1 ('MetaData "DerivStrategy" "GHC.Internal.TH.Syntax" "ghc-internal" '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.
Constructors
Overlappable | May be overlapped by more specific instances |
Overlapping | May overlap a more general instance |
Overlaps | Both |
Incoherent | Both |
Instances
Data Overlap # | |||||
Defined in GHC.Internal.TH.Syntax Methods 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 # | |||||
Defined in GHC.Internal.TH.Syntax Associated Types
| |||||
Show Overlap # | |||||
Eq Overlap # | |||||
Ord Overlap # | |||||
Defined in GHC.Internal.TH.Syntax | |||||
Lift Overlap # | Since: 2.22.1.0 | ||||
type Rep Overlap # | |||||
Defined in GHC.Internal.TH.Syntax type Rep Overlap = D1 ('MetaData "Overlap" "GHC.Internal.TH.Syntax" "ghc-internal" '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 #
tySynInstD :: Quote m => m TySynEqn -> m Dec #
injectivityAnn :: Name -> [Name] -> InjectivityAnn #
kindSig :: Kind -> FamilyResultSig Source #
tyVarSig :: TyVarBndr () -> FamilyResultSig Source #
Fixity
Default declaration
Foreign Function Interface (FFI)
javaScript :: Callconv #
interruptible :: Safety #
Functional dependencies
Pragmas
valueAnnotation :: Name -> AnnTarget #
typeAnnotation :: Name -> AnnTarget #
pragSpecInstD :: Quote m => m Type -> m Dec #
Pattern Synonyms
patSynD :: Quote m => Name -> m PatSynArgs -> m PatSynDir -> m Pat -> m Dec #
Pattern synonym declaration
prefixPatSyn :: Quote m => [Name] -> m PatSynArgs #
infixPatSyn :: Quote m => Name -> Name -> m PatSynArgs #
recordPatSyn :: Quote m => [Name] -> m PatSynArgs #
Implicit Parameters
implicitParamBindD :: Quote m => String -> m Exp -> m Dec #
Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.
Reify
thisModule :: Q Module #
pure the Module at the place of splicing. Can be used as an
input for reifyModule
.
Documentation
withDecDoc :: String -> Q Dec -> Q Dec #
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] #
Variant of withDecDoc
that applies the same documentation to
multiple declarations. Useful for documenting quoted declarations.
Arguments
:: 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.
Arguments
:: 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.
Arguments
:: 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.
Arguments
:: 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.
Arguments
:: 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.
Arguments
:: 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.