Internal helper function.
Moduleghc-internal-10.0.0Haskell2010
GHC.Internal.TH.Syntax
This module is used internally in GHC's integration with Template Haskell and defines the abstract syntax of 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.
Import Language.Haskell.TH or Language.Haskell.TH.Syntax instead!
- 77 types
- 39 values
- Packageghc-internal-10.0.0
- Exports116
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceSyntax.hs
Default fixity: infixl 9
Internal helper function.
Synonym for 'Many, from ghc-internal.
Highest allowed operator precedence for Fixity constructor (answer: 9)
Smart constructor for ModName
Generate a capturable name. Occurrences of such names will be resolved according to the Haskell scoping rules at the occurrence site.
For example:
f = [| pi + $(varE (mkName "pi")) |]
...
g = let pi = 3 in $fIn this case, g is desugared to
g = Prelude.pi + 3Note that mkName may be used with qualified names:
mkName "Prelude.pi"See also Language.Haskell.TH.Lib.dyn for a useful combinator. The above example could
be rewritten using Language.Haskell.TH.Lib.dyn as
f = [| pi + $(dyn "pi") |]Used for 'x etc, but not available to the programmer
Only used internally
Only used internally
Only used internally
Smart constructor for OccName
Smart constructor for PkgName
Accessor for ModName
The name without its module prefix.
Examples
nameBase ''Data.Either.Either"Either"nameBase (mkName "foo")"foo"nameBase (mkName "Module.foo")"foo"
Module prefix of a name, if it exists.
Examples
nameModule ''Data.Either.EitherJust "Data.Either"nameModule (mkName "foo")NothingnameModule (mkName "Module.foo")Just "Module"
A name's package, if it exists.
Examples
namePackage ''Data.Either.EitherJust "base"namePackage (mkName "foo")NothingnamePackage (mkName "Module.foo")Nothing
Returns whether a name represents an occurrence of a top-level variable (VarName), data constructor (DataName), type constructor, or type class (TcClsName). If we can't be sure, it returns Nothing.
Examples
nameSpace 'Prelude.idJust VarNamenameSpace (mkName "id")Nothing -- only works for top-level variable namesnameSpace 'Data.Maybe.JustJust DataNamenameSpace ''Data.Maybe.MaybeJust TcClsNamenameSpace ''Data.Ord.OrdJust TcClsName
Accessor for OccName
Synonym for 'One, from ghc-internal.
Accessor for PkgName
Internal helper function.
Tuple data constructor
Tuple type constructor
Unboxed sum data constructor
Unboxed sum type constructor
Unboxed tuple data constructor
Unboxed tuple type constructor
Annotation target for reifyAnnotations
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift AnnLookupDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep AnnLookup = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"AnnLookup"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"AnnLookupModule"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)) :+: C1 ('MetaCons"AnnLookupName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))
The target of an ANN pragma
Constructors
ModuleAnnotation{-# ANN {module} ... #-}TypeAnnotation Name{-# ANN type {name} ... #-}ValueAnnotation Name{-# ANN {name} ... #-}
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift AnnTargetDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep AnnTarget = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"AnnTarget"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"ModuleAnnotation"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"TypeAnnotation"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"ValueAnnotation"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))
In PrimTyConI, arity of the type constructor
Strictness information in a data constructor's argument.
Constructors
Bang SourceUnpackedness SourceStrictnessC { {-# UNPACK #-} !}a
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData BangDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift BangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Bang = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Bang"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Bang"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceUnpackedness) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceStrictness)))
A type with a strictness annotation, as in data constructors. See Con.
Visibility of a type variable. See Inferred vs. specified type variables.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift BndrVisDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep BndrVis = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"BndrVis"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"BndrReq"
'PrefixI 'False) U1 :+: C1 ('MetaCons"BndrInvis"
'PrefixI 'False) U1)
A potentially guarded expression, as in function definitions or case alternatives.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData BodyDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift BodyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Body = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Body"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"GuardedB"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)])) :+: C1 ('MetaCons"NormalB"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))
Raw bytes embedded into the binary.
Avoid using Bytes constructor directly as it is likely to change in the
future. Use helpers such as mkBytes in Language.Haskell.TH.Lib instead.
Constructors
BytesbytesPtr :: ForeignPtr Word8Pointer to the data
bytesOffset :: WordOffset from the pointer
bytesSize :: WordNumber of bytes
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData BytesDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift BytesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Bytes = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Bytes"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Bytes"
'PrefixI 'True) (S1 ('MetaSel ('Just"bytesPtr"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignPtr Word8)) :*: (S1 ('MetaSel ('Just"bytesOffset"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word) :*: S1 ('MetaSel ('Just"bytesSize"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word))))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift CallconvDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Callconv = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Callconv"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"CCall"
'PrefixI 'False) U1 :+: C1 ('MetaCons"StdCall"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"CApi"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"Prim"
'PrefixI 'False) U1 :+: C1 ('MetaCons"JavaScript"
'PrefixI 'False) U1)))
A clause consists of patterns, guards, a body expression, and a list of
declarations under a where. Clauses are seen in equations for function
definitions, case-experssions, explicitly-bidirectional pattern synonyms,
etc.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift ClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Clause = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Clause"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Clause"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))))
A data constructor.
The constructors for Con can roughly be divided up into two categories: those for constructors with "vanilla" syntax (NormalC, RecC, and InfixC), and those for constructors with GADT syntax (GadtC and RecGadtC). The ForallC constructor, which quantifies additional type variables and class contexts, can surround either variety of constructor. However, the type variables that it quantifies are different depending on what constructor syntax is used:
If a ForallC surrounds a constructor with vanilla syntax, then the ForallC will only quantify existential type variables. For example:
data Foo a = forall b. MkFoo a b
In MkFoo, ForallC will quantify b, but not a.
If a ForallC surrounds a constructor with GADT syntax, then the ForallC will quantify all type variables used in the constructor. For example:
data Bar a b where
MkBar :: (a ~ b) => c -> MkBar a b
In MkBar, ForallC will quantify a, b, and c.
Multiplicity annotations for data types are currently not supported in Template Haskell (i.e. all fields represented by Template Haskell will be linear).
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ConDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift ConDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Con = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Con"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"NormalC"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType])) :+: (C1 ('MetaCons"RecC"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType])) :+: C1 ('MetaCons"InfixC"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BangType) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BangType))))) :+: (C1 ('MetaCons"ForallC"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con))) :+: (C1 ('MetaCons"GadtC"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons"RecGadtC"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))))
A context, as found on the left side of a => in a type.
A single declaration.
Constructors
FunD Name [Clause]{ f p1 p2 = b where decs }ValD Pat Body [Dec]{ p = b where decs }DataD Cxt Name [TyVarBndr BndrVis] (Maybe Kind) [Con] [DerivClause]{ data Cxt x => T x = A x | B (T x) deriving (Z,W) deriving stock Eq }NewtypeD Cxt Name [TyVarBndr BndrVis] (Maybe Kind) Con [DerivClause]{ newtype Cxt x => T x = A (B x) deriving (Z,W Q) deriving stock Eq }TypeDataD Name [TyVarBndr BndrVis] (Maybe Kind) [Con]{ type data T x = A x | B (T x) }TySynD Name [TyVarBndr BndrVis] Type{ type T x = (x,x) }ClassD Cxt Name [TyVarBndr BndrVis] [FunDep] [Dec]{ class Eq a => Ord a where ds }InstanceD (Maybe Overlap) Cxt Type [Dec]{ instance {-# OVERLAPS #-} Show w => Show [w] where ds }SigD Name Type{ length :: [a] -> Int }KiSigD Name Kind{ type TypeRep :: k -> Type }ForeignD Foreign{ foreign import ... } { foreign export ... }InfixD Fixity NamespaceSpecifier Name{ infix 3 data foo }DefaultD [Type]{ default (Integer, Double) }PragmaD Pragmapragmas
DataFamilyD Name [TyVarBndr BndrVis] (Maybe Kind)DataInstD Cxt (Maybe [TyVarBndr ()]) Type (Maybe Kind) [Con] [DerivClause]{ data instance Cxt x => T [x] = A x | B (T x) deriving (Z,W) deriving stock Eq }NewtypeInstD Cxt (Maybe [TyVarBndr ()]) Type (Maybe Kind) Con [DerivClause]{ newtype instance Cxt x => T [x] = A (B x) deriving (Z,W) deriving stock Eq }TySynInstD TySynEqn{ type instance ... }OpenTypeFamilyD TypeFamilyHeadClosedTypeFamilyD TypeFamilyHead [TySynEqn]{ type family F a b = (r :: *) | r -> a where ... }RoleAnnotD Name [Role]{ type role T nominal representational }StandaloneDerivD (Maybe DerivStrategy) Cxt Type{ deriving stock instance Ord a => Ord (Foo a) }DefaultSigD Name Type{ default size :: Data a => a -> Int }PatSynD Name PatSynArgs PatSynDir PatPattern Synonyms
PatSynSigD Name PatSynTypeA pattern synonym's type signature.
ImplicitParamBindD String Exp{ ?x = expr }Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData DecDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift DecDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Dec = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Dec"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((((C1 ('MetaCons"FunD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause])) :+: (C1 ('MetaCons"ValD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: C1 ('MetaCons"DataD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))))) :+: (C1 ('MetaCons"NewtypeD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))) :+: (C1 ('MetaCons"TypeDataD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]))) :+: C1 ('MetaCons"TySynD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))) :+: ((C1 ('MetaCons"ClassD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunDep]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec])))) :+: (C1 ('MetaCons"InstanceD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Overlap)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: C1 ('MetaCons"SigD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons"KiSigD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons"ForeignD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Foreign))) :+: (C1 ('MetaCons"InfixD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Fixity) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NamespaceSpecifier) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: C1 ('MetaCons"DefaultD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type])))))) :+: (((C1 ('MetaCons"PragmaD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pragma)) :+: (C1 ('MetaCons"DataFamilyD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)))) :+: C1 ('MetaCons"DataInstD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))))) :+: (C1 ('MetaCons"NewtypeInstD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))) :+: (C1 ('MetaCons"TySynInstD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TySynEqn)) :+: C1 ('MetaCons"OpenTypeFamilyD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeFamilyHead))))) :+: ((C1 ('MetaCons"ClosedTypeFamilyD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeFamilyHead) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TySynEqn])) :+: (C1 ('MetaCons"RoleAnnotD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: C1 ('MetaCons"StandaloneDerivD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe DerivStrategy)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))) :+: ((C1 ('MetaCons"DefaultSigD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"PatSynD"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynArgs)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynDir) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))) :+: (C1 ('MetaCons"PatSynSigD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: C1 ('MetaCons"ImplicitParamBindD"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))))
Unlike SourceStrictness and SourceUnpackedness, DecidedStrictness refers to the strictness annotations that the compiler chooses for a data constructor field, which may be different from what is written in source code.
Note that non-unpacked strict fields are assigned DecidedLazy when a bang would be inappropriate, such as the field of a newtype constructor and fields that have an unlifted type.
See reifyConStrictness for more information.
Constructors
DecidedLazyField inferred to not have a bang.
DecidedStrictField inferred to have a bang.
DecidedUnpackField inferred to be unpacked.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift DecidedStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep DecidedStrictness = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"DecidedStrictness"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"DecidedLazy"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"DecidedStrict"
'PrefixI 'False) U1 :+: C1 ('MetaCons"DecidedUnpack"
'PrefixI 'False) U1))
A single deriving clause at the end of a datatype declaration.
Constructors
DerivClause (Maybe DerivStrategy) Cxt{ deriving stock (Eq, Ord) }
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift DerivClauseDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep DerivClause = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"DerivClause"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"DerivClause"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe DerivStrategy)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt)))
What the user explicitly requests when deriving an instance with
-XDerivingStrategies.
Constructors
StockStrategyderiving {stock} CAnyclassStrategyderiving {anyclass} C,-XDeriveAnyClassNewtypeStrategyderiving {newtype} C,-XGeneralizedNewtypeDerivingViaStrategy Typederiving C {via T},-XDerivingVia
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift DerivStrategyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep DerivStrategy = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"DerivStrategy"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"StockStrategy"
'PrefixI 'False) U1 :+: C1 ('MetaCons"AnyclassStrategy"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"NewtypeStrategy"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ViaStrategy"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
A location at which to attach Haddock documentation. Note that adding documentation to a Name defined oustide of the current module will cause an error.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift DocLocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep DocLoc = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"DocLoc"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"ModuleDoc"
'PrefixI 'False) U1 :+: C1 ('MetaCons"DeclDoc"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons"ArgDoc"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons"InstDoc"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
A Haskell expression.
Constructors
VarE Name{ x }ConE Namedata T1 = C1 t1 t2; p = {C1} e1 e2LitE Lit{ 5 or 'c'}AppE Exp Exp{ f x }AppTypeE Exp Type{ f @Int }InfixE (Maybe Exp) Exp (Maybe Exp){x + y} or {(x+)} or {(+ x)} or {(+)}UInfixE Exp Exp Exp{x + y}See
Language.Haskell.TH.Syntax#infixParensE Exp{ (e) }See
Language.Haskell.TH.Syntax#infixLamE [Pat] Exp{ \ p1 p2 -> e }LamCaseE [Match]{ \case m1; m2 }LamCasesE [Clause]{ \cases m1; m2 }TupE [Maybe Exp]{ (e1,e2) }The Maybe is necessary for handling tuple sections.
(1,)translates to
TupE [Just (LitE (IntegerL 1)),Nothing]UnboxedTupE [Maybe Exp]{ (# e1,e2 #) }The Maybe is necessary for handling tuple sections.
(# 'c', #)translates to
UnboxedTupE [Just (LitE (CharL 'c')),Nothing]UnboxedSumE Exp SumAlt SumArity{ (#|e|#) }CondE Exp Exp Exp{ if e1 then e2 else e3 }MultiIfE [(Guard, Exp)]{ if | g1 -> e1 | g2 -> e2 }LetE [Dec] Exp{ let { x=e1; y=e2 } in e3 }CaseE Exp [Match]{ case e of m1; m2 }DoE (Maybe ModName) [Stmt]{ do { p <- e1; e2 } }or a qualified do if the module name is presentMDoE (Maybe ModName) [Stmt]{ mdo { x <- e1 y; y <- e2 x; } }or a qualified mdo if the module name is presentCompE [Stmt]ArithSeqE Range{ [ 1 ,2 .. 10 ] }ListE [Exp]{ [1,2,3] }SigE Exp Type{ e :: t }RecConE Name [FieldExp]{ T { x = y, z = w } }RecUpdE Exp [FieldExp]{ (f x) { z = w } }StaticE Exp{ static e }UnboundVarE Name{ _x }This is used for holes or unresolved identifiers in AST quotes. Note that it could either have a variable name or constructor name.
LabelE String{ #x }( Overloaded label )ImplicitParamVarE String{ ?x }( Implicit parameter )GetFieldE Exp String{ exp.field }( Overloaded Record Dot )ProjectionE (NonEmpty String)(.x)or(.x.y)(Record projections)TypedBracketE Exp[|| e ||]TypedSpliceE Exp$$eTypeE Type{ type t }ForallE [TyVarBndr Specificity] Expforall <vars>. <expr>ForallVisE [TyVarBndr ()] Expforall <vars> -> <expr>ConstrainedE [Exp] Exp<ctxt> => <expr>
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ExpDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift ExpDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Exp = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Exp"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (((((C1 ('MetaCons"VarE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"ConE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons"LitE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Lit)) :+: C1 ('MetaCons"AppE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))) :+: ((C1 ('MetaCons"AppTypeE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"InfixE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Exp)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Exp))))) :+: (C1 ('MetaCons"UInfixE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons"ParensE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"LamE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))) :+: (((C1 ('MetaCons"LamCaseE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Match])) :+: C1 ('MetaCons"LamCasesE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause]))) :+: (C1 ('MetaCons"TupE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe Exp])) :+: (C1 ('MetaCons"UnboxedTupE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe Exp])) :+: C1 ('MetaCons"UnboxedSumE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumAlt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)))))) :+: ((C1 ('MetaCons"CondE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: C1 ('MetaCons"MultiIfE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)]))) :+: (C1 ('MetaCons"LetE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons"CaseE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Match])) :+: C1 ('MetaCons"DoE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModName)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt]))))))) :+: ((((C1 ('MetaCons"MDoE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModName)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])) :+: C1 ('MetaCons"CompE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt]))) :+: (C1 ('MetaCons"ArithSeqE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Range)) :+: C1 ('MetaCons"ListE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Exp])))) :+: ((C1 ('MetaCons"SigE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"RecConE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp]))) :+: (C1 ('MetaCons"RecUpdE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp])) :+: (C1 ('MetaCons"StaticE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"UnboundVarE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))))) :+: (((C1 ('MetaCons"LabelE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons"ImplicitParamVarE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) :+: (C1 ('MetaCons"GetFieldE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons"ProjectionE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty String))) :+: C1 ('MetaCons"TypedBracketE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))))) :+: ((C1 ('MetaCons"TypedSpliceE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"TypeE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons"ForallE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons"ForallVisE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr ()]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"ConstrainedE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Exp]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))))))))
Type family result signature
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift FamilyResultSigDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep FamilyResultSig = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"FamilyResultSig"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NoSig"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"KindSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons"TyVarSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TyVarBndr ())))))
A (field name, pattern) pair. See RecP.
Fixity, as specified in a infix[lr] n declaration.
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData FixityDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift FixityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Fixity = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Fixity"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Fixity"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FixityDirection)))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift FixityDirectionDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep FixityDirection = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"FixityDirection"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"InfixL"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"InfixR"
'PrefixI 'False) U1 :+: C1 ('MetaCons"InfixN"
'PrefixI 'False) U1))
A foreign declaration.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift ForeignDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Foreign = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Foreign"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"ImportF"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Callconv) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Safety)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: C1 ('MetaCons"ExportF"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Callconv) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
Functional dependency syntax, as in a class declaration.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift FunDepDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep FunDep = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"FunDep"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"FunDep"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))
A single guard.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData GuardDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift GuardDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Guard = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Guard"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NormalG"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"PatG"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])))
Obtained from reify in the Q Monad.
Constructors
ClassI Dec [InstanceDec]A class, with a list of its visible instances
ClassOpI Name Type ParentNameA class method
TyConI DecA "plain" type constructor. "Fancier" type constructors are returned using PrimTyConI or FamilyI as appropriate. At present, this reified declaration will never have derived instances attached to it (if you wish to check for an instance, see
reifyInstances).FamilyI Dec [InstanceDec]A type or data family, with a list of its visible instances. A closed type family is returned with 0 instances.
PrimTyConI Name Arity UnliftedA "primitive" type constructor, which can't be expressed with a Dec. Examples:
(->),Int#.DataConI Name Type ParentNameA data constructor
PatSynI Name PatSynTypeA pattern synonym
VarI Name Type (Maybe Dec)A "value" variable (as opposed to a type variable, see TyVarI).
The
Maybe Decfield containsJustthe declaration which defined the variable - including the RHS of the declaration - or elseNothing, in the case where the RHS is unavailable to the compiler.At present, this value is always
Nothing: returning the RHS has not yet been implemented and is tracked by GHC #14474.TyVarI Name TypeA type variable.
The
Typefield contains the type which underlies the variable. At present, this is alwaysVarT theName, but future changes may permit refinement of this.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData InfoDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift InfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Info = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Info"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (((C1 ('MetaCons"ClassI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [InstanceDec])) :+: C1 ('MetaCons"ClassOpI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ParentName)))) :+: (C1 ('MetaCons"TyConI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec)) :+: C1 ('MetaCons"FamilyI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [InstanceDec])))) :+: ((C1 ('MetaCons"PrimTyConI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Arity) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Unlifted))) :+: C1 ('MetaCons"DataConI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ParentName)))) :+: (C1 ('MetaCons"PatSynI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: (C1 ('MetaCons"VarI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Dec)))) :+: C1 ('MetaCons"TyVarI"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))))
Injectivity annotation as in an injective type family
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift InjectivityAnnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep InjectivityAnn = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"InjectivityAnn"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"InjectivityAnn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))
An inline pragma.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData InlineDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift InlineDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Inline = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Inline"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NoInline"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"Inline"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Inlinable"
'PrefixI 'False) U1))
InstanceDec describes a single instance of a class or type function. It is just a Dec, but guaranteed to be one of the following:
DataInstD or NewtypeInstD (with empty derived
[Name])
To avoid duplication between kinds and types, they
are defined to be the same. Naturally, you would never
have a type be StarT and you would never have a kind
be SigT, but many of the other constructors are shared.
Note that the kind Bool is denoted with ConT, not
PromotedT. Similarly, tuple kinds are made with TupleT,
not PromotedTupleT.
A Haskell literal. Note that the numeric types are all in terms of either Integer or Rational, regardless of the type they represent. The extra precision reflects the textual representation in source code.
Constructors
CharL Char'c'StringL String"string"IntegerL Integer123. Used for overloaded and non-overloaded literals. We don't have a good way to represent non-overloaded literals at the moment. Maybe that doesn't matter?RationalL Rational1.23. See above comment on IntegerL.IntPrimL Integer123#WordPrimL Integer123##FloatPrimL Rational1.23#DoublePrimL Rational1.23##StringPrimL [Word8]"string"#. A primitive C-style string, typeAddr#BytesPrimL BytesSome raw bytes, type
Addr#:CharPrimL Char'c'#
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData LitDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift LitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Lit = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Lit"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (((C1 ('MetaCons"CharL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)) :+: C1 ('MetaCons"StringL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) :+: (C1 ('MetaCons"IntegerL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons"RationalL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)) :+: C1 ('MetaCons"IntPrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer))))) :+: ((C1 ('MetaCons"WordPrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons"FloatPrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)) :+: C1 ('MetaCons"DoublePrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)))) :+: (C1 ('MetaCons"StringPrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Word8])) :+: (C1 ('MetaCons"BytesPrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bytes)) :+: C1 ('MetaCons"CharPrimL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char))))))
A location within a source file.
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData LocDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift LocDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Loc = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Loc"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Loc"
'PrefixI 'True) ((S1 ('MetaSel ('Just"loc_filename"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just"loc_package"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Just"loc_module"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just"loc_start"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CharPos) :*: S1 ('MetaSel ('Just"loc_end"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CharPos)))))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData MatchDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift MatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Match = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Match"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Match"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift ModNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep ModName = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"ModName"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'True) (C1 ('MetaCons"ModName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift ModuleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Module = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Module"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Module"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PkgName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName)))
Obtained from reifyModule in the Q Monad.
Constructors
ModuleInfo [Module]Contains the import list of the module.
Instances6Eq, Data, Ord, Show, Generic, Rep
Eq ModuleInfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData ModuleInfoDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd ModuleInfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow ModuleInfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric ModuleInfoDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntaxtype Rep ModuleInfo = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"ModuleInfo"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"ModuleInfo"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Module])))
An abstract type representing names in the syntax tree.
Names can be constructed in several ways, which come with different
name-capture guarantees (see Language.Haskell.TH.Syntax#namecapture for
an explanation of name capture):
the built-in syntax
'fand''Tcan be used to construct names, The expression'fgives aNamewhich refers to the valuefcurrently in scope, and''Tgives aNamewhich refers to the typeTcurrently in scope. These names can never be captured.lookupValueNameandlookupTypeNameare similar to'fand''Trespectively, but theNames are looked up at the point where the current splice is being run. These names can never be captured.newNamemonadically generates a new name, which can never be captured.mkName generates a capturable name.
Names constructed using newName and mkName may be used in bindings
(such as let x = ... or x -> ...), but names constructed using
lookupValueName, lookupTypeName, 'f, ''T may not.
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData NameDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift NameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Name = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Name"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Name"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameFlavour)))
Constructors
NameSAn unqualified name; dynamically bound
NameQ ModNameA qualified name; dynamically bound
NameU !UniqA unique local name
NameL !UniqLocal name bound outside of the TH AST
NameG NameSpace PkgName ModNameGlobal name bound outside of the TH AST: An original name (occurrences only, not binders) Need the namespace too to be sure which thing we are naming
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift NameFlavourDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep NameFlavour = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"NameFlavour"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"NameS"
'PrefixI 'False) U1 :+: C1 ('MetaCons"NameQ"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName))) :+: (C1 ('MetaCons"NameU"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Uniq)) :+: (C1 ('MetaCons"NameL"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Uniq)) :+: C1 ('MetaCons"NameG"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameSpace) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PkgName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName))))))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift NameSpaceDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep NameSpace = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"NameSpace"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"VarName"
'PrefixI 'False) U1 :+: C1 ('MetaCons"DataName"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"TcClsName"
'PrefixI 'False) U1 :+: C1 ('MetaCons"FldName"
'PrefixI 'True) (S1 ('MetaSel ('Just"fldParent"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String))))
A way to specify a namespace to look in when GHC needs to find a name's source
Constructors
NoNamespaceSpecifierName may be everything; If there are two names in different namespaces, then consider both
TypeNamespaceSpecifierName should be a type-level entity, such as a data type, type alias, type family, type class, or type variable
DataNamespaceSpecifierName should be a term-level entity, such as a function, data constructor, or pattern synonym
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift NamespaceSpecifierDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep NamespaceSpecifier = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"NamespaceSpecifier"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NoNamespaceSpecifier"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"TypeNamespaceSpecifier"
'PrefixI 'False) U1 :+: C1 ('MetaCons"DataNamespaceSpecifier"
'PrefixI 'False) U1))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift OccNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep OccName = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"OccName"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'True) (C1 ('MetaCons"OccName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))
Varieties of allowed instance overlap.
Constructors
OverlappableMay be overlapped by more specific instances
OverlappingMay overlap a more general instance
OverlapsBoth Overlapping and Overlappable
IncoherentBoth Overlapping and Overlappable, and pick an arbitrary one if multiple choices are available.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift OverlapDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Overlap = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Overlap"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"Overlappable"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Overlapping"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"Overlaps"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Incoherent"
'PrefixI 'False) U1))
Pattern in Haskell given in {}
Constructors
LitP Lit{ 5 or 'c' }VarP Name{ x }TupP [Pat]{ (p1,p2) }UnboxedTupP [Pat]{ (# p1,p2 #) }UnboxedSumP Pat SumAlt SumArity{ (#|p|#) }ConP Name [Type] [Pat]data T1 = C1 t1 t2; {C1 @ty1 p1 p2} = eInfixP Pat Name Patfoo ({x :+ y}) = eUInfixP Pat Name Patfoo ({x :+ y}) = eSee
Language.Haskell.TH.Syntax#infixParensP Pat{(p)}See
Language.Haskell.TH.Syntax#infixTildeP Pat{ ~p }BangP Pat{ !p }AsP Name Pat{ x @ p }WildP{ _ }RecP Name [FieldPat]f (Pt { pointx = x }) = g xListP [Pat]{ [1,2,3] }SigP Pat Type{ p :: t }ViewP Exp Pat{ e -> p }TypeP Type{ type p }InvisP Type{p }@OrP (NonEmpty Pat){ p1; p2 }
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData PatDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift PatDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Pat = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Pat"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((((C1 ('MetaCons"LitP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Lit)) :+: C1 ('MetaCons"VarP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons"TupP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat])) :+: (C1 ('MetaCons"UnboxedTupP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat])) :+: C1 ('MetaCons"UnboxedSumP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumAlt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)))))) :+: ((C1 ('MetaCons"ConP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]))) :+: C1 ('MetaCons"InfixP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))) :+: (C1 ('MetaCons"UInfixP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons"ParensP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)) :+: C1 ('MetaCons"TildeP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))))) :+: (((C1 ('MetaCons"BangP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)) :+: C1 ('MetaCons"AsP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons"WildP"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"RecP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldPat])) :+: C1 ('MetaCons"ListP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]))))) :+: ((C1 ('MetaCons"SigP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"ViewP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons"TypeP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons"InvisP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"OrP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty Pat))))))))
A pattern synonym's argument type.
Constructors
PrefixPatSyn [Name]pattern P {x y z} = pInfixPatSyn Name Namepattern {x P y} = pRecordPatSyn [Name]pattern P { {x,y,z} } = p
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift PatSynArgsDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep PatSynArgs = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"PatSynArgs"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"PrefixPatSyn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: (C1 ('MetaCons"InfixPatSyn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"RecordPatSyn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))))
A pattern synonym's directionality.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift PatSynDirDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep PatSynDir = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"PatSynDir"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Unidir"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ImplBidir"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ExplBidir"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause]))))
A pattern synonym's type. Note that a pattern synonym's fully specified type has a peculiar shape coming with two forall quantifiers and two constraint contexts. For example, consider the pattern synonym
pattern P x1 x2 ... xn = <some-pattern>P's complete type is of the following form
pattern P :: forall universals. required constraints
=> forall existentials. provided constraints
=> t1 -> t2 -> ... -> tn -> tconsisting of four parts:
the (possibly empty lists of) universally quantified type variables and required constraints on them.
the (possibly empty lists of) existentially quantified type variables and the provided constraints on them.
the types
t1,t2, ..,tnofx1,x2, ..,xn, respectivelythe type
tof<some-pattern>, mentioning only universals.
Pattern synonym types interact with TH when (a) reifying a pattern synonym, (b) pretty printing, or (c) specifying a pattern synonym's type signature explicitly:
Reification always returns a pattern synonym's fully specified type in abstract syntax.
Pretty printing via
Language.Haskell.TH.Ppr.pprPatSynTypeabbreviates a pattern synonym's type unambiguously in concrete syntax: The rule of thumb is to print initial empty universals and the required context as() =>, if existentials and a provided context follow. If only universals and their required context, but no existentials are specified, only the universals and their required context are printed. If both or none are specified, so both (or none) are printed.When specifying a pattern synonym's type explicitly with PatSynSigD either one of the universals, the existentials, or their contexts may be left empty.
See the GHC user's guide for more information on pattern synonyms and their types: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#pattern-synonyms.
Phase control syntax.
Constructors
AllPhasesThe default when unspecified
FromPhase Int[n]BeforePhase Int[~n]
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift PhasesDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Phases = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Phases"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"AllPhases"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"FromPhase"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons"BeforePhase"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift PkgNameDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep PkgName = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"PkgName"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'True) (C1 ('MetaCons"PkgName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))
Constructors
InlineP Name Inline RuleMatch PhasesOpaqueP Name{ {-# OPAQUE T #-} }SpecialiseEP (Maybe [TyVarBndr ()]) [RuleBndr] Exp (Maybe Inline) Phases{ {-# SPECIALISE [forall t_1 ... t_i]. [forall b_1 ... b_j] [INLINE] [phases] exp #-} }SpecialiseInstP Type{ {-# SPECIALISE instance I #-} }RuleP String (Maybe [TyVarBndr ()]) [RuleBndr] Exp Exp Phases{ {-# RULES "name" [phases] [forall t_1 ... t_i]. [forall b_1 ... b_j] rules... e_1 = e_2 #-} }AnnP AnnTarget Exp{ {-# ANN target exp #-} }LineP Int String{ {-# LINE n "file name" #-} }CompleteP [Name] (Maybe Name){ {-# COMPLETE C_1, ..., C_i [ :: T ] #-} }SCCP Name (Maybe String){ {-# SCC fun "optional_name" #-} }
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift PragmaDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Pragma = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Pragma"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (((C1 ('MetaCons"InlineP"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Inline)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuleMatch) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases))) :+: C1 ('MetaCons"OpaqueP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons"SpecialiseEP"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RuleBndr])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Inline)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases)))) :+: C1 ('MetaCons"SpecialiseInstP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons"RuleP"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RuleBndr]))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases)))) :+: C1 ('MetaCons"AnnP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AnnTarget) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons"LineP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons"CompleteP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Name))) :+: C1 ('MetaCons"SCCP"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))))))
Since the advent of ConstraintKinds, constraints are really just types.
Equality constraints use the EqualityT constructor. Constraints may also
be tuples of other constraints.
A list/enum range expression.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData RangeDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift RangeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Range = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Range"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"FromR"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"FromThenR"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons"FromToR"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"FromThenToR"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))
Role annotations
Constructors
NominalRnominalRepresentationalRrepresentationalPhantomRphantomInferR_
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData RoleDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift RoleDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Role = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Role"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"NominalR"
'PrefixI 'False) U1 :+: C1 ('MetaCons"RepresentationalR"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"PhantomR"
'PrefixI 'False) U1 :+: C1 ('MetaCons"InferR"
'PrefixI 'False) U1))
A binder found in the forall of a RULES pragma.
Constructors
RuleVar Nameforall {a} ... .TypedRuleVar Name Typeforall {(a :: t)} ... .
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift RuleBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep RuleBndr = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"RuleBndr"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"RuleVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"TypedRuleVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))
A CONLIKE modifier, as in one of the various inline pragmas, or lack
thereof (FunLike).
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift RuleMatchDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep RuleMatch = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"RuleMatch"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"ConLike"
'PrefixI 'False) U1 :+: C1 ('MetaCons"FunLike"
'PrefixI 'False) U1)
A safety level, as in a Foreign declaration.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift SafetyDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Safety = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Safety"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"Unsafe"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"Safe"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Interruptible"
'PrefixI 'False) U1))
SourceStrictness corresponds to strictness annotations found in the source code.
This may not agree with the annotations returned by reifyConStrictness.
See reifyConStrictness for more information.
Constructors
NoSourceStrictnessC aSourceLazyC {~}aSourceStrictC {!}a
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift SourceStrictnessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep SourceStrictness = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"SourceStrictness"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NoSourceStrictness"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"SourceLazy"
'PrefixI 'False) U1 :+: C1 ('MetaCons"SourceStrict"
'PrefixI 'False) U1))
SourceUnpackedness corresponds to unpack annotations found in the source code.
This may not agree with the annotations returned by reifyConStrictness.
See reifyConStrictness for more information.
Constructors
NoSourceUnpackednessC aSourceNoUnpackC { {-# NOUNPACK #-} } aSourceUnpackC { {-# UNPACK #-} } a
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift SourceUnpackednessDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep SourceUnpackedness = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"SourceUnpackedness"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NoSourceUnpackedness"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"SourceNoUnpack"
'PrefixI 'False) U1 :+: C1 ('MetaCons"SourceUnpack"
'PrefixI 'False) U1))
The specificity of a type variable in a forall ....
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift SpecificityDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Specificity = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Specificity"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"SpecifiedSpec"
'PrefixI 'False) U1 :+: C1 ('MetaCons"InferredSpec"
'PrefixI 'False) U1)
A single statement, as in do-notation.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData StmtDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift StmtDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Stmt = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Stmt"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((C1 ('MetaCons"BindS"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons"LetS"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: (C1 ('MetaCons"NoBindS"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons"ParS"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[Stmt]])) :+: C1 ('MetaCons"RecS"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])))))
As of template-haskell-2.11.0.0, StrictType has been replaced by
BangType.
In UnboxedSumE and UnboxedSumP, the number associated with a particular data constructor. SumAlts are one-indexed and should never exceed the value of its corresponding SumArity. For example:
In UnboxedSumE, UnboxedSumT, and UnboxedSumP, the total number of
SumAlts. For example, (#|#) has a SumArity of 2.
Type-level literals.
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift TyLitDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep TyLit = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"TyLit"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"NumTyLit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons"StrTyLit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons"CharTyLit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char))))
One equation of a type family instance or closed type family. The arguments are the left-hand-side type and the right-hand-side result.
For instance, if you had the following type family:
type family Foo (a :: k) :: k where
forall k (a :: k). Foo @k a = a
The Foo @k a = a equation would be represented as follows:
TySynEqn (Just [PlainTV k, KindedTV a (VarT k)])
(AppT (AppKindT (ConT ''Foo) (VarT k)) (VarT a))
(VarT a)
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift TySynEqnDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep TySynEqn = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"TySynEqn"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"TySynEqn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
The flag type parameter is instantiated to one of the following types:
Specificity (examples: ForallC, ForallT)
(), a catch-all type for other forms of binders, including ForallVisT, DataInstD, RuleP, and TyVarSig
Instances10Functor, Foldable, Traversable, Lift, Eq, Data, …
Functor TyVarBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxFoldable TyVarBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxTraversable TyVarBndrDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift a => Lift (TyVarBndr a)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.LiftEq flag => Eq (TyVarBndr flag)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData flag => Data (TyVarBndr flag)Defined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd flag => Ord (TyVarBndr flag)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow flag => Show (TyVarBndr flag)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric (TyVarBndr flag)Defined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntaxtype Rep (TyVarBndr flag) = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"TyVarBndr"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"PlainTV"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 flag)) :+: C1 ('MetaCons"KindedTV"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 flag) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))))
A Haskell type.
Constructors
ForallT [TyVarBndr Specificity] Cxt Typeforall <vars>. <ctxt> => <type>ForallVisT [TyVarBndr ()] Typeforall <vars> -> <type>AppT Type TypeT a bAppKindT Type KindT @k tSigT Type Kindt :: kVarT NameaConT NameTPromotedT Name'TInfixT Type Name TypeT + TUInfixT Type Name TypeT + TSee
Language.Haskell.TH.Syntax#infixPromotedInfixT Type Name TypeT :+: TPromotedUInfixT Type Name TypeT :+: TSee
Language.Haskell.TH.Syntax#infixParensT Type(T)TupleT Int(,),(,,), etc.UnboxedTupleT Int(#,#),(#,,#), etc.UnboxedSumT SumArity(#|#),(#||#), etc.ArrowT->MulArrowT%n ->Generalised arrow type with multiplicity argument
EqualityT~ListT[]PromotedTupleT Int'(),'(,),'(,,), etc.PromotedNilT'[]PromotedConsT'(:)StarT*ConstraintTConstraintLitT TyLit0,1,2, etc.WildCardT_ImplicitParamT String Type?x :: t
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData TypeDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift TypeDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep Type = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"Type"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) ((((C1 ('MetaCons"ForallT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons"ForallVisT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr ()]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"AppT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons"AppKindT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons"SigT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))) :+: (C1 ('MetaCons"VarT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"ConT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))) :+: ((C1 ('MetaCons"PromotedT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons"InfixT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons"UInfixT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))) :+: ((C1 ('MetaCons"PromotedInfixT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons"PromotedUInfixT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: (C1 ('MetaCons"ParensT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"TupleT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))))) :+: (((C1 ('MetaCons"UnboxedTupleT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: (C1 ('MetaCons"UnboxedSumT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)) :+: C1 ('MetaCons"ArrowT"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"MulArrowT"
'PrefixI 'False) U1 :+: C1 ('MetaCons"EqualityT"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ListT"
'PrefixI 'False) U1 :+: C1 ('MetaCons"PromotedTupleT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))) :+: ((C1 ('MetaCons"PromotedNilT"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"PromotedConsT"
'PrefixI 'False) U1 :+: C1 ('MetaCons"StarT"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ConstraintT"
'PrefixI 'False) U1 :+: C1 ('MetaCons"LitT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyLit))) :+: (C1 ('MetaCons"WildCardT"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ImplicitParamT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))))
Common elements of OpenTypeFamilyD and ClosedTypeFamilyD. By
analogy with "head" for type classes and type class instances as
defined in Type classes: an exploration of the design space, the
TypeFamilyHead is defined to be the elements of the declaration
between type family and where.
Constructors
Instances7Eq, Data, Ord, Show, Generic, Lift, …
Eq TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxData TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.Data.DataOrd TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxShow TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxGeneric TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.SyntaxLift TypeFamilyHeadDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep TypeFamilyHead = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Syntax"TypeFamilyHead"
"GHC.Internal.TH.Syntax"
"ghc-internal"
'False) (C1 ('MetaCons"TypeFamilyHead"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FamilyResultSig) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe InjectivityAnn)))))
Uniq is used by GHC to distinguish names from each other.
In PrimTyConI, is the type constructor unlifted?
As of template-haskell-2.11.0.0, VarStrictType has been replaced by
VarBangType.
Language extensions
1 declarationForeign formats supported by GHC via TH
Instances5Eq, Show, Generic, Lift, Rep
Eq ForeignSrcLangDefined in ghc-internal-10.0.0 · GHC.Internal.ForeignSrcLangShow ForeignSrcLangDefined in ghc-internal-10.0.0 · GHC.Internal.ForeignSrcLangGeneric ForeignSrcLangDefined in ghc-internal-10.0.0 · GHC.Internal.ForeignSrcLangLift ForeignSrcLangDefined in ghc-internal-10.0.0 · GHC.Internal.TH.Lifttype Rep ForeignSrcLang = D1 ('MetaDataDefined in ghc-internal-10.0.0 · GHC.Internal.ForeignSrcLang"ForeignSrcLang"
"GHC.Internal.ForeignSrcLang"
"ghc-internal"
'False) ((C1 ('MetaCons"LangC"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"LangCxx"
'PrefixI 'False) U1 :+: C1 ('MetaCons"LangObjc"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"LangObjcxx"
'PrefixI 'False) U1 :+: C1 ('MetaCons"LangAsm"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"LangJs"
'PrefixI 'False) U1 :+: C1 ('MetaCons"RawObject"
'PrefixI 'False) U1)))