Language.Haskell.TH.Syntax

template-haskell-2.24.0.0: Support library for Template Haskell

Safe Haskell | Trustworthy
Language | Haskell2010

Language.Haskell.TH.Syntax

Synopsis

- class Monad m => Quote (m :: Type -> Type) where
  - newName :: String -> m Name
- data Exp
  - = VarE Name
  - | ConE Name
  - | LitE Lit
  - | AppE Exp Exp
  - | AppTypeE Exp Type
  - | InfixE (Maybe Exp) Exp (Maybe Exp)
  - | UInfixE Exp Exp Exp
  - | ParensE Exp
  - | LamE [Pat] Exp
  - | LamCaseE [Match]
  - | LamCasesE [Clause]
  - | TupE [Maybe Exp]
  - | UnboxedTupE [Maybe Exp]
  - | UnboxedSumE Exp SumAlt SumArity
  - | CondE Exp Exp Exp
  - | MultiIfE [(Guard, Exp)]
  - | LetE [Dec] Exp
  - | CaseE Exp [Match]
  - | DoE (Maybe ModName) [Stmt]
  - | MDoE (Maybe ModName) [Stmt]
  - | CompE [Stmt]
  - | ArithSeqE Range
  - | ListE [Exp]
  - | SigE Exp Type
  - | RecConE Name [FieldExp]
  - | RecUpdE Exp [FieldExp]
  - | StaticE Exp
  - | UnboundVarE Name
  - | LabelE String
  - | ImplicitParamVarE String
  - | GetFieldE Exp String
  - | ProjectionE (NonEmpty String)
  - | TypedBracketE Exp
  - | TypedSpliceE Exp
  - | TypeE Type
  - | ForallE [TyVarBndr Specificity] Exp
  - | ForallVisE [TyVarBndr ()] Exp
  - | ConstrainedE [Exp] Exp
- data Match = Match Pat Body [Dec]
- data Clause = Clause [Pat] Body [Dec]
- newtype Q a = Q {
  - unQ :: forall (m :: Type -> Type). Quasi m => m a
  }
- data Pat
  - = LitP Lit
  - | VarP Name
  - | TupP [Pat]
  - | UnboxedTupP [Pat]
  - | UnboxedSumP Pat SumAlt SumArity
  - | ConP Name [Type] [Pat]
  - | InfixP Pat Name Pat
  - | UInfixP Pat Name Pat
  - | ParensP Pat
  - | TildeP Pat
  - | BangP Pat
  - | AsP Name Pat
  - | WildP
  - | RecP Name [FieldPat]
  - | ListP [Pat]
  - | SigP Pat Type
  - | ViewP Exp Pat
  - | TypeP Type
  - | InvisP Type
  - | OrP (NonEmpty Pat)
- data Stmt
  - = BindS Pat Exp
  - | LetS [Dec]
  - | NoBindS Exp
  - | ParS [[Stmt]]
  - | RecS [Stmt]
- data Con
  - = NormalC Name [BangType]
  - | RecC Name [VarBangType]
  - | InfixC BangType Name BangType
  - | ForallC [TyVarBndr Specificity] Cxt Con
  - | GadtC [Name] [BangType] Type
  - | RecGadtC [Name] [VarBangType] Type
- data Type
  - = ForallT [TyVarBndr Specificity] Cxt Type
  - | ForallVisT [TyVarBndr ()] Type
  - | AppT Type Type
  - | AppKindT Type Kind
  - | SigT Type Kind
  - | VarT Name
  - | ConT Name
  - | PromotedT Name
  - | InfixT Type Name Type
  - | UInfixT Type Name Type
  - | PromotedInfixT Type Name Type
  - | PromotedUInfixT Type Name Type
  - | ParensT Type
  - | TupleT Int
  - | UnboxedTupleT Int
  - | UnboxedSumT SumArity
  - | ArrowT
  - | MulArrowT
  - | EqualityT
  - | ListT
  - | PromotedTupleT Int
  - | PromotedNilT
  - | PromotedConsT
  - | StarT
  - | ConstraintT
  - | LitT TyLit
  - | WildCardT
  - | ImplicitParamT String Type
- data Dec
  - = FunD Name [Clause]
  - | ValD Pat Body [Dec]
  - | DataD Cxt Name [TyVarBndr BndrVis] (Maybe Kind) [Con] [DerivClause]
  - | NewtypeD Cxt Name [TyVarBndr BndrVis] (Maybe Kind) Con [DerivClause]
  - | TypeDataD Name [TyVarBndr BndrVis] (Maybe Kind) [Con]
  - | TySynD Name [TyVarBndr BndrVis] Type
  - | ClassD Cxt Name [TyVarBndr BndrVis] [FunDep] [Dec]
  - | InstanceD (Maybe Overlap) Cxt Type [Dec]
  - | SigD Name Type
  - | KiSigD Name Kind
  - | ForeignD Foreign
  - | InfixD Fixity NamespaceSpecifier Name
  - | DefaultD [Type]
  - | PragmaD Pragma
  - | DataFamilyD Name [TyVarBndr BndrVis] (Maybe Kind)
  - | DataInstD Cxt (Maybe [TyVarBndr ()]) Type (Maybe Kind) [Con] [DerivClause]
  - | NewtypeInstD Cxt (Maybe [TyVarBndr ()]) Type (Maybe Kind) Con [DerivClause]
  - | TySynInstD TySynEqn
  - | OpenTypeFamilyD TypeFamilyHead
  - | ClosedTypeFamilyD TypeFamilyHead [TySynEqn]
  - | RoleAnnotD Name [Role]
  - | StandaloneDerivD (Maybe DerivStrategy) Cxt Type
  - | DefaultSigD Name Type
  - | PatSynD Name PatSynArgs PatSynDir Pat
  - | PatSynSigD Name PatSynType
  - | ImplicitParamBindD String Exp
- type BangType = (Bang, Type)
- type VarBangType = (Name, Bang, Type)
- type FieldExp = (Name, Exp)
- type FieldPat = (Name, Pat)
- data Name = Name OccName NameFlavour
- data FunDep = FunDep [Name] [Name]
- type Pred = Type
- data RuleBndr
  - = RuleVar Name
  - | TypedRuleVar Name Type
- data TySynEqn = TySynEqn (Maybe [TyVarBndr ()]) Type Type
- data InjectivityAnn = InjectivityAnn Name [Name]
- type Kind = Type
- data Overlap
  - = Overlappable
  - | Overlapping
  - | Overlaps
  - | Incoherent
- data DerivClause = DerivClause (Maybe DerivStrategy) Cxt
- data DerivStrategy
  - = StockStrategy
  - | AnyclassStrategy
  - | NewtypeStrategy
  - | ViaStrategy Type
- newtype Code (m :: Type -> Type) (a :: TYPE r) = Code {
  - examineCode :: m (TExp a)
  }
- newtype ModName = ModName String
- addCorePlugin :: String -> Q ()
- addDependentFile :: FilePath -> Q ()
- addForeignFile :: ForeignSrcLang -> String -> Q ()
- addForeignFilePath :: ForeignSrcLang -> FilePath -> Q ()
- addForeignSource :: ForeignSrcLang -> String -> Q ()
- addModFinalizer :: Q () -> Q ()
- addTempFile :: String -> Q FilePath
- addTopDecls :: [Dec] -> Q ()
- badIO :: String -> IO a
- bindCode :: Monad m => m a -> (a -> Code m b) -> Code m b
- bindCode_ :: Monad m => m a -> Code m b -> Code m b
- cmpEq :: Ordering -> Bool
- compareBytes :: Bytes -> Bytes -> Ordering
- counter :: IORef Uniq
- defaultFixity :: Fixity
- eqBytes :: Bytes -> Bytes -> Bool
- extsEnabled :: Q [Extension]
- getDoc :: DocLoc -> Q (Maybe String)
- getPackageRoot :: Q FilePath
- getQ :: Typeable a => Q (Maybe a)
- get_cons_names :: Con -> [Name]
- hoistCode :: Monad m => (forall x. m x -> n x) -> Code m a -> Code n a
- isExtEnabled :: Extension -> Q Bool
- isInstance :: Name -> [Type] -> Q Bool
- joinCode :: Monad m => m (Code m a) -> Code m a
- liftCode :: forall a m. m (TExp a) -> Code m a
- location :: Q Loc
- lookupName :: Bool -> String -> Q (Maybe Name)
- lookupTypeName :: String -> Q (Maybe Name)
- lookupValueName :: String -> Q (Maybe Name)
- manyName :: Name
- maxPrecedence :: Int
- memcmp :: Ptr a -> Ptr b -> CSize -> IO CInt
- mkNameG :: NameSpace -> String -> String -> String -> Name
- mkNameU :: String -> Uniq -> Name
- mkOccName :: String -> OccName
- mkPkgName :: String -> PkgName
- mk_tup_name :: Int -> NameSpace -> Bool -> Name
- mkName :: String -> Name
- mkNameG_v :: String -> String -> String -> Name
- mkNameG_d :: String -> String -> String -> Name
- mkNameG_tc :: String -> String -> String -> Name
- mkNameL :: String -> Uniq -> Name
- mkNameS :: String -> Name
- unTypeCode :: forall a m. Quote m => Code m a -> m Exp
- mkModName :: String -> ModName
- unsafeCodeCoerce :: forall a m. Quote m => m Exp -> Code m a
- mkNameQ :: String -> String -> Name
- mkNameG_fld :: String -> String -> String -> String -> Name
- modString :: ModName -> String
- nameBase :: Name -> String
- nameModule :: Name -> Maybe String
- namePackage :: Name -> Maybe String
- nameSpace :: Name -> Maybe NameSpace
- newDeclarationGroup :: Q [Dec]
- newNameIO :: String -> IO Name
- occString :: OccName -> String
- oneName :: Name
- pkgString :: PkgName -> String
- putDoc :: DocLoc -> String -> Q ()
- putQ :: Typeable a => a -> Q ()
- recover :: Q a -> Q a -> Q a
- reify :: Name -> Q Info
- reifyAnnotations :: Data a => AnnLookup -> Q [a]
- reifyConStrictness :: Name -> Q [DecidedStrictness]
- reifyFixity :: Name -> Q (Maybe Fixity)
- reifyInstances :: Name -> [Type] -> Q [InstanceDec]
- reifyModule :: Module -> Q ModuleInfo
- reifyRoles :: Name -> Q [Role]
- reifyType :: Name -> Q Type
- report :: Bool -> String -> Q ()
- reportError :: String -> Q ()
- reportWarning :: String -> Q ()
- runIO :: IO a -> Q a
- sequenceQ :: Monad m => forall a. [m a] -> m [a]
- runQ :: Quasi m => Q a -> m a
- showName :: Name -> String
- showName' :: NameIs -> Name -> String
- thenCmp :: Ordering -> Ordering -> Ordering
- tupleDataName :: Int -> Name
- tupleTypeName :: Int -> Name
- unTypeQ :: forall a m. Quote m => m (TExp a) -> m Exp
- unboxedSumDataName :: SumAlt -> SumArity -> Name
- unboxedSumTypeName :: SumArity -> Name
- unboxedTupleDataName :: Int -> Name
- unboxedTupleTypeName :: Int -> Name
- unsafeTExpCoerce :: forall a m. Quote m => m Exp -> m (TExp a)
- data ForeignSrcLang
  - = LangC
  - | LangCxx
  - | LangObjc
  - | LangObjcxx
  - | LangAsm
  - | LangJs
  - | RawObject
- data Extension
  - = Cpp
  - | OverlappingInstances
  - | UndecidableInstances
  - | IncoherentInstances
  - | UndecidableSuperClasses
  - | MonomorphismRestriction
  - | MonoLocalBinds
  - | DeepSubsumption
  - | RelaxedPolyRec
  - | ExtendedDefaultRules
  - | NamedDefaults
  - | ForeignFunctionInterface
  - | UnliftedFFITypes
  - | InterruptibleFFI
  - | CApiFFI
  - | GHCForeignImportPrim
  - | JavaScriptFFI
  - | ParallelArrays
  - | Arrows
  - | TemplateHaskell
  - | TemplateHaskellQuotes
  - | QualifiedDo
  - | QuasiQuotes
  - | ImplicitParams
  - | ImplicitPrelude
  - | ScopedTypeVariables
  - | AllowAmbiguousTypes
  - | UnboxedTuples
  - | UnboxedSums
  - | UnliftedNewtypes
  - | UnliftedDatatypes
  - | BangPatterns
  - | TypeFamilies
  - | TypeFamilyDependencies
  - | TypeInType
  - | OverloadedStrings
  - | OverloadedLists
  - | NumDecimals
  - | DisambiguateRecordFields
  - | RecordWildCards
  - | NamedFieldPuns
  - | ViewPatterns
  - | OrPatterns
  - | GADTs
  - | GADTSyntax
  - | NPlusKPatterns
  - | DoAndIfThenElse
  - | BlockArguments
  - | RebindableSyntax
  - | ConstraintKinds
  - | PolyKinds
  - | DataKinds
  - | TypeData
  - | InstanceSigs
  - | ApplicativeDo
  - | LinearTypes
  - | RequiredTypeArguments
  - | StandaloneDeriving
  - | DeriveDataTypeable
  - | AutoDeriveTypeable
  - | DeriveFunctor
  - | DeriveTraversable
  - | DeriveFoldable
  - | DeriveGeneric
  - | DefaultSignatures
  - | DeriveAnyClass
  - | DeriveLift
  - | DerivingStrategies
  - | DerivingVia
  - | TypeSynonymInstances
  - | FlexibleContexts
  - | FlexibleInstances
  - | ConstrainedClassMethods
  - | MultiParamTypeClasses
  - | NullaryTypeClasses
  - | FunctionalDependencies
  - | UnicodeSyntax
  - | ExistentialQuantification
  - | MagicHash
  - | EmptyDataDecls
  - | KindSignatures
  - | RoleAnnotations
  - | ParallelListComp
  - | TransformListComp
  - | MonadComprehensions
  - | GeneralizedNewtypeDeriving
  - | RecursiveDo
  - | PostfixOperators
  - | TupleSections
  - | PatternGuards
  - | LiberalTypeSynonyms
  - | RankNTypes
  - | ImpredicativeTypes
  - | TypeOperators
  - | ExplicitNamespaces
  - | PackageImports
  - | ExplicitForAll
  - | AlternativeLayoutRule
  - | AlternativeLayoutRuleTransitional
  - | DatatypeContexts
  - | NondecreasingIndentation
  - | RelaxedLayout
  - | TraditionalRecordSyntax
  - | LambdaCase
  - | MultiWayIf
  - | BinaryLiterals
  - | NegativeLiterals
  - | HexFloatLiterals
  - | DuplicateRecordFields
  - | OverloadedLabels
  - | EmptyCase
  - | PatternSynonyms
  - | PartialTypeSignatures
  - | NamedWildCards
  - | StaticPointers
  - | TypeApplications
  - | Strict
  - | StrictData
  - | EmptyDataDeriving
  - | NumericUnderscores
  - | QuantifiedConstraints
  - | StarIsType
  - | ImportQualifiedPost
  - | CUSKs
  - | StandaloneKindSignatures
  - | LexicalNegation
  - | FieldSelectors
  - | OverloadedRecordDot
  - | OverloadedRecordUpdate
  - | TypeAbstractions
  - | ExtendedLiterals
  - | ListTuplePuns
  - | MultilineStrings
  - | ExplicitLevelImports
  - | ImplicitStagePersistence
- data AnnLookup
  - = AnnLookupModule Module
  - | AnnLookupName Name
- data AnnTarget
  - = ModuleAnnotation
  - | TypeAnnotation Name
  - | ValueAnnotation Name
- type Arity = Int
- data Bang = Bang SourceUnpackedness SourceStrictness
- data BndrVis
  - = BndrReq
  - | BndrInvis
- data Body
  - = GuardedB [(Guard, Exp)]
  - | NormalB Exp
- data Bytes = Bytes {
  - bytesPtr :: ForeignPtr Word8
  - bytesOffset :: Word
  - bytesSize :: Word
  }
- data Callconv
  - = CCall
  - | StdCall
  - | CApi
  - | Prim
  - | JavaScript
- type CharPos = (Int, Int)
- type Cxt = [Pred]
- data DecidedStrictness
  - = DecidedLazy
  - | DecidedStrict
  - | DecidedUnpack
- data DocLoc
  - = ModuleDoc
  - | DeclDoc Name
  - | ArgDoc Name Int
  - | InstDoc Type
- data FamilyResultSig
  - = NoSig
  - | KindSig Kind
  - | TyVarSig (TyVarBndr ())
- data Fixity = Fixity Int FixityDirection
- data FixityDirection
  - = InfixL
  - | InfixR
  - | InfixN
- data Foreign
  - = ImportF Callconv Safety String Name Type
  - | ExportF Callconv String Name Type
- data Guard
  - = NormalG Exp
  - | PatG [Stmt]
- data Info
  - = ClassI Dec [InstanceDec]
  - | ClassOpI Name Type ParentName
  - | TyConI Dec
  - | FamilyI Dec [InstanceDec]
  - | PrimTyConI Name Arity Unlifted
  - | DataConI Name Type ParentName
  - | PatSynI Name PatSynType
  - | VarI Name Type (Maybe Dec)
  - | TyVarI Name Type
- data Inline
  - = NoInline
  - | Inline
  - | Inlinable
- type InstanceDec = Dec
- data Lit
  - = CharL Char
  - | StringL String
  - | IntegerL Integer
  - | RationalL Rational
  - | IntPrimL Integer
  - | WordPrimL Integer
  - | FloatPrimL Rational
  - | DoublePrimL Rational
  - | StringPrimL [Word8]
  - | BytesPrimL Bytes
  - | CharPrimL Char
- data Loc = Loc {
  - loc_filename :: String
  - loc_package :: String
  - loc_module :: String
  - loc_start :: CharPos
  - loc_end :: CharPos
  }
- data Module = Module PkgName ModName
- data ModuleInfo = ModuleInfo [Module]
- data NameFlavour
  - = NameS
  - | NameQ ModName
  - | NameU !Uniq
  - | NameL !Uniq
  - | NameG NameSpace PkgName ModName
- data NameIs
  - = Alone
  - | Applied
  - | Infix
- data NameSpace
  - = VarName
  - | DataName
  - | TcClsName
  - | FldName {
    - fldParent :: !String
    }
- data NamespaceSpecifier
  - = NoNamespaceSpecifier
  - | TypeNamespaceSpecifier
  - | DataNamespaceSpecifier
- newtype OccName = OccName String
- type ParentName = Name
- data PatSynArgs
  - = PrefixPatSyn [Name]
  - | InfixPatSyn Name Name
  - | RecordPatSyn [Name]
- data PatSynDir
  - = Unidir
  - | ImplBidir
  - | ExplBidir [Clause]
- type PatSynType = Type
- data Phases
  - = AllPhases
  - | FromPhase Int
  - | BeforePhase Int
- newtype PkgName = PkgName String
- data Pragma where
  - InlineP Name Inline RuleMatch Phases
  - OpaqueP Name
  - SpecialiseEP (Maybe [TyVarBndr ()]) [RuleBndr] Exp (Maybe Inline) Phases
  - SpecialiseInstP Type
  - RuleP String (Maybe [TyVarBndr ()]) [RuleBndr] Exp Exp Phases
  - AnnP AnnTarget Exp
  - LineP Int String
  - CompleteP [Name] (Maybe Name)
  - SCCP Name (Maybe String)
  - pattern SpecialiseP :: Name -> Type -> Maybe Inline -> Phases -> Pragma
- class (MonadIO m, MonadFail m) => Quasi (m :: Type -> Type) where
  - qNewName :: String -> m Name
  - qReport :: Bool -> String -> m ()
  - qRecover :: m a -> m a -> m a
  - qLookupName :: Bool -> String -> m (Maybe Name)
  - qReify :: Name -> m Info
  - qReifyFixity :: Name -> m (Maybe Fixity)
  - qReifyType :: Name -> m Type
  - qReifyInstances :: Name -> [Type] -> m [Dec]
  - qReifyRoles :: Name -> m [Role]
  - qReifyAnnotations :: Data a => AnnLookup -> m [a]
  - qReifyModule :: Module -> m ModuleInfo
  - qReifyConStrictness :: Name -> m [DecidedStrictness]
  - qLocation :: m Loc
  - qRunIO :: IO a -> m a
  - qGetPackageRoot :: m FilePath
  - qAddDependentFile :: FilePath -> m ()
  - qAddTempFile :: String -> m FilePath
  - qAddTopDecls :: [Dec] -> m ()
  - qAddForeignFilePath :: ForeignSrcLang -> String -> m ()
  - qAddModFinalizer :: Q () -> m ()
  - qAddCorePlugin :: String -> m ()
  - qGetQ :: Typeable a => m (Maybe a)
  - qPutQ :: Typeable a => a -> m ()
  - qIsExtEnabled :: Extension -> m Bool
  - qExtsEnabled :: m [Extension]
  - qPutDoc :: DocLoc -> String -> m ()
  - qGetDoc :: DocLoc -> m (Maybe String)
- data Range
  - = FromR Exp
  - | FromThenR Exp Exp
  - | FromToR Exp Exp
  - | FromThenToR Exp Exp Exp
- data Role
  - = NominalR
  - | RepresentationalR
  - | PhantomR
  - | InferR
- data RuleMatch
  - = ConLike
  - | FunLike
- data Safety
  - = Unsafe
  - | Safe
  - | Interruptible
- data SourceStrictness
  - = NoSourceStrictness
  - | SourceLazy
  - | SourceStrict
- data SourceUnpackedness
  - = NoSourceUnpackedness
  - | SourceNoUnpack
  - | SourceUnpack
- data Specificity
  - = SpecifiedSpec
  - | InferredSpec
- type Strict = Bang
- type StrictType = BangType
- type SumAlt = Int
- type SumArity = Int
- newtype TExp (a :: TYPE r) = TExp {
  - unType :: Exp
  }
- data TyLit
  - = NumTyLit Integer
  - | StrTyLit String
  - | CharTyLit Char
- data TyVarBndr flag
  - = PlainTV Name flag
  - | KindedTV Name flag Kind
- data TypeFamilyHead = TypeFamilyHead Name [TyVarBndr BndrVis] FamilyResultSig (Maybe InjectivityAnn)
- type Uniq = Integer
- type Unlifted = Bool
- type VarStrictType = VarBangType
- makeRelativeToProject :: FilePath -> Q FilePath
- liftString :: Quote m => String -> m Exp
- class Lift (t :: TYPE r) where
  - lift :: Quote m => t -> m Exp
  - liftTyped :: forall (m :: Type -> Type). Quote m => t -> Code m t
- dataToCodeQ :: forall (m :: Type -> Type) a. (Quote m, Data a) => (forall b. Data b => b -> Maybe (Code m b)) -> a -> Code m a
- dataToExpQ :: (Quote m, Data a) => (forall b. Data b => b -> Maybe (m Exp)) -> a -> m Exp
- dataToPatQ :: (Quote m, Data a) => (forall b. Data b => b -> Maybe (m Pat)) -> a -> m Pat
- dataToQa :: (Quote m, Data a) => (Name -> k) -> (Lit -> m q) -> (k -> [m q] -> m q) -> (forall b. Data b => b -> Maybe (m q)) -> a -> m q
- falseName :: Name
- justName :: Name
- leftName :: Name
- liftData :: (Quote m, Data a) => a -> m Exp
- liftDataTyped :: forall (m :: Type -> Type) a. (Quote m, Data a) => a -> Code m a
- nonemptyName :: Name
- nothingName :: Name
- rightName :: Name
- trueName :: Name

# Documentation

class Monad m => Quote (m :: Type -> Type) where Source #

The `Quote` class implements the minimal interface which is necessary for desugaring quotations.

- The `Monad m` superclass is needed to stitch together the different AST fragments.
- `newName` is used when desugaring binding structures such as lambdas to generate fresh names.

Therefore the type of an untyped quotation in GHC is `Quote m => m Exp`

For many years the type of a quotation was fixed to be `Q Exp` but by more precisely specifying the minimal interface it enables the `Exp` to be extracted purely from the quotation without interacting with `Q`.

Methods

newName :: String -> m Name Source #

Generate a fresh name, which cannot be captured.

For example, this:

    f = $(do
        nm1 <- newName "x"
        let nm2 = mkName "x"
        return (LamE [VarP nm1] (LamE [VarP nm2] (VarE nm1)))
       )

will produce the splice

    f = \x0 -> \x -> x0

In particular, the occurrence `VarE nm1` refers to the binding `VarP nm1`, and is not captured by the binding `VarP nm2`.

Although names generated by `newName` cannot be captured, they can capture other names. For example, this:

    g = $(do
      nm1 <- newName "x"
      let nm2 = mkName "x"
      return (LamE [VarP nm2] (LamE [VarP nm1] (VarE nm2)))
     )

will produce the splice

    g = \x -> \x0 -> x0

since the occurrence `VarE nm2` is captured by the innermost binding of `x`, namely `VarP nm1`.

#### Instances

Instances details

Quote Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods newName :: String -> Q Name Source #
Quote IO Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods newName :: String -> IO Name Source #

data Exp Source #

A Haskell expression.

Constructors

VarE Name |
    { x }
ConE Name |
    data T1 = C1 t1 t2; p = {C1} e1 e2
LitE 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
ParensE Exp |
    { (e) }
See Language.Haskell.TH.Syntax
LamE [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 present
MDoE (Maybe ModName) [Stmt] | `{ mdo { x <- e1 y; y <- e2 x; } }` or a qualified mdo if the module name is present
CompE [Stmt] |
    { [ (x,y) | x <- xs, y <- ys ] }
The result expression of the comprehension is the last of the ``Stmt``s, and should be a `NoBindS`. E.g. translation:
    [ f x | x <- xs ]
    CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))]
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 |
    $$e
TypeE Type |
    { type t }
ForallE [TyVarBndr Specificity] Exp |
    forall <vars>. <expr>
ForallVisE [TyVarBndr ()] Exp |
    forall <vars> -> <expr>
ConstrainedE [Exp] Exp |
    <ctxt> => <expr>

#### Instances

Instances details

Ppr Exp Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Exp -> Doc Source # ppr_list :: [Exp] -> Doc Source #
Eq Exp Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Exp -> Exp -> Bool Source # (/=) :: Exp -> Exp -> Bool Source #
Ord Exp Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Exp -> Exp -> Ordering Source # (<) :: Exp -> Exp -> Bool Source # (<=) :: Exp -> Exp -> Bool Source # (>) :: Exp -> Exp -> Bool Source # (>=) :: Exp -> Exp -> Bool Source # max :: Exp -> Exp -> Exp Source # min :: Exp -> Exp -> Exp Source #
Data Exp Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Exp -> c Exp Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Exp Source # toConstr :: Exp -> Constr Source # dataTypeOf :: Exp -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Exp) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Exp) Source # gmapT :: (forall b. Data b => b -> b) -> Exp -> Exp Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Exp -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Exp -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Exp -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Exp -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Exp -> m Exp Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Exp -> m Exp Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Exp -> m Exp Source #
Generic Exp Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Exp |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Exp = D1 ('MetaData "Exp" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((((C1 ('MetaCons "VarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "ConE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "LitE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Lit)) :+: C1 ('MetaCons "AppE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))) :+: ((C1 ('MetaCons "AppTypeE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "InfixE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Exp)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Exp))))) :+: (C1 ('MetaCons "UInfixE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons "ParensE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "LamE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))) :+: (((C1 ('MetaCons "LamCaseE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Match])) :+: C1 ('MetaCons "LamCasesE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause]))) :+: (C1 ('MetaCons "TupE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe Exp])) :+: (C1 ('MetaCons "UnboxedTupE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe Exp])) :+: C1 ('MetaCons "UnboxedSumE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumAlt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)))))) :+: ((C1 ('MetaCons "CondE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: C1 ('MetaCons "MultiIfE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)]))) :+: (C1 ('MetaCons "LetE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons "CaseE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Match])) :+: C1 ('MetaCons "DoE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt]))))))) :+: ((((C1 ('MetaCons "MDoE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])) :+: C1 ('MetaCons "CompE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt]))) :+: (C1 ('MetaCons "ArithSeqE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Range)) :+: C1 ('MetaCons "ListE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Exp])))) :+: ((C1 ('MetaCons "SigE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "RecConE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp]))) :+: (C1 ('MetaCons "RecUpdE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp])) :+: (C1 ('MetaCons "StaticE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "UnboundVarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))))) :+: (((C1 ('MetaCons "LabelE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "ImplicitParamVarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) :+: (C1 ('MetaCons "GetFieldE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons "ProjectionE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty String))) :+: C1 ('MetaCons "TypedBracketE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))))) :+: ((C1 ('MetaCons "TypedSpliceE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "TypeE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons "ForallE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons "ForallVisE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr ()]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "ConstrainedE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Exp]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))))))))
Methods from :: Exp -> Rep Exp x Source # to :: Rep Exp x -> Exp Source #
Show Exp Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Exp -> ShowS Source # show :: Exp -> String Source # showList :: [Exp] -> ShowS Source #
Lift Exp Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Exp -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Exp -> Code m Exp Source #
type Rep Exp Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Exp = D1 ('MetaData "Exp" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((((C1 ('MetaCons "VarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "ConE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "LitE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Lit)) :+: C1 ('MetaCons "AppE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))) :+: ((C1 ('MetaCons "AppTypeE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "InfixE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Exp)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Exp))))) :+: (C1 ('MetaCons "UInfixE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons "ParensE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "LamE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))) :+: (((C1 ('MetaCons "LamCaseE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Match])) :+: C1 ('MetaCons "LamCasesE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause]))) :+: (C1 ('MetaCons "TupE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe Exp])) :+: (C1 ('MetaCons "UnboxedTupE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe Exp])) :+: C1 ('MetaCons "UnboxedSumE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumAlt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)))))) :+: ((C1 ('MetaCons "CondE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: C1 ('MetaCons "MultiIfE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)]))) :+: (C1 ('MetaCons "LetE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons "CaseE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Match])) :+: C1 ('MetaCons "DoE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt]))))))) :+: ((((C1 ('MetaCons "MDoE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ModName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])) :+: C1 ('MetaCons "CompE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt]))) :+: (C1 ('MetaCons "ArithSeqE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Range)) :+: C1 ('MetaCons "ListE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Exp])))) :+: ((C1 ('MetaCons "SigE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "RecConE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp]))) :+: (C1 ('MetaCons "RecUpdE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldExp])) :+: (C1 ('MetaCons "StaticE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "UnboundVarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))))) :+: (((C1 ('MetaCons "LabelE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "ImplicitParamVarE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) :+: (C1 ('MetaCons "GetFieldE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons "ProjectionE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty String))) :+: C1 ('MetaCons "TypedBracketE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))))) :+: ((C1 ('MetaCons "TypedSpliceE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "TypeE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons "ForallE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons "ForallVisE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr ()]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "ConstrainedE" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Exp]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))))))))

data Match Source #

A `case`-alternative

Constructors

Match Pat Body [Dec] |
    case e of { pat -> body where decs }

#### Instances

Instances details

Ppr Match Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Match -> Doc Source # ppr_list :: [Match] -> Doc Source #
Eq Match Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Match -> Match -> Bool Source # (/=) :: Match -> Match -> Bool Source #
Ord Match Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Match -> Match -> Ordering Source # (<) :: Match -> Match -> Bool Source # (<=) :: Match -> Match -> Bool Source # (>) :: Match -> Match -> Bool Source # (>=) :: Match -> Match -> Bool Source # max :: Match -> Match -> Match Source # min :: Match -> Match -> Match Source #
Data Match Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Match -> c Match Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Match Source # toConstr :: Match -> Constr Source # dataTypeOf :: Match -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Match) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Match) Source # gmapT :: (forall b. Data b => b -> b) -> Match -> Match Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Match -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Match -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Match -> m Match Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Match -> m Match Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Match -> m Match Source #
Generic Match Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Match |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Match = D1 ('MetaData "Match" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Match" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))))
Methods from :: Match -> Rep Match x Source # to :: Rep Match x -> Match Source #
Show Match Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Match -> ShowS Source # show :: Match -> String Source # showList :: [Match] -> ShowS Source #
Lift Match Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Match -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Match -> Code m Match Source #
type Rep Match Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Match = D1 ('MetaData "Match" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Match" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))))

data Clause Source #

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.

Constructors

Clause [Pat] Body [Dec] |
    f { p1 p2 = body where decs }

#### Instances

Instances details

Ppr Clause Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Clause -> Doc Source # ppr_list :: [Clause] -> Doc Source #
Eq Clause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Clause -> Clause -> Bool Source # (/=) :: Clause -> Clause -> Bool Source #
Ord Clause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Clause -> Clause -> Ordering Source # (<) :: Clause -> Clause -> Bool Source # (<=) :: Clause -> Clause -> Bool Source # (>) :: Clause -> Clause -> Bool Source # (>=) :: Clause -> Clause -> Bool Source # max :: Clause -> Clause -> Clause Source # min :: Clause -> Clause -> Clause Source #
Data Clause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Clause -> c Clause Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Clause Source # toConstr :: Clause -> Constr Source # dataTypeOf :: Clause -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Clause) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Clause) Source # gmapT :: (forall b. Data b => b -> b) -> Clause -> Clause Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Clause -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Clause -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Clause -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Clause -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Clause -> m Clause Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Clause -> m Clause Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Clause -> m Clause Source #
Generic Clause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Clause |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Clause = D1 ('MetaData "Clause" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Clause" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))))
Methods from :: Clause -> Rep Clause x Source # to :: Rep Clause x -> Clause Source #
Show Clause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Clause -> ShowS Source # show :: Clause -> String Source # showList :: [Clause] -> ShowS Source #
Lift Clause Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Clause -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Clause -> Code m Clause Source #
type Rep Clause Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Clause = D1 ('MetaData "Clause" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Clause" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))))

newtype Q a Source #

In short, `Q` provides the `Quasi` operations in one neat monad for the user.

The longer story, is that `Q` wraps an arbitrary `Quasi`-able monad. The perceptive reader notices that `Quasi` has only two instances, `Q` itself and `IO`, neither of which have concrete implementations.`Q` plays the trick of dependency inversion, providing an abstract interface for the user which is later concretely fufilled by an concrete `Quasi` instance, internal to GHC.

Constructors

Q |
Fields unQ :: forall (m :: Type -> Type). Quasi m => m a

#### Instances

Instances details

Applicative Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods pure :: a -> Q a Source # (<*>) :: Q (a -> b) -> Q a -> Q b Source # liftA2 :: (a -> b -> c) -> Q a -> Q b -> Q c Source # (*>) :: Q a -> Q b -> Q b Source # (<*) :: Q a -> Q b -> Q a Source #
Functor Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods fmap :: (a -> b) -> Q a -> Q b Source # (<$) :: a -> Q b -> Q a Source #
Monad Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (>>=) :: Q a -> (a -> Q b) -> Q b Source # (>>) :: Q a -> Q b -> Q b Source # return :: a -> Q a Source #
MonadFail Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods fail :: HasCallStack => String -> Q a Source #
MonadFix Q Source # | If the function passed to `mfix` inspects its argument, the resulting action will throw a `FixIOException`. Since: ghc-internal-2.17.0.0
Instance details Defined in GHC.Internal.TH.Syntax Methods mfix :: (a -> Q a) -> Q a Source #
MonadIO Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods liftIO :: IO a -> Q a Source #
Quasi Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods qNewName :: String -> Q Name Source # qReport :: Bool -> String -> Q () Source # qRecover :: Q a -> Q a -> Q a Source # qLookupName :: Bool -> String -> Q (Maybe Name) Source # qReify :: Name -> Q Info Source # qReifyFixity :: Name -> Q (Maybe Fixity) Source # qReifyType :: Name -> Q Type Source # qReifyInstances :: Name -> [Type] -> Q [Dec] Source # qReifyRoles :: Name -> Q [Role] Source # qReifyAnnotations :: Data a => AnnLookup -> Q [a] Source # qReifyModule :: Module -> Q ModuleInfo Source # qReifyConStrictness :: Name -> Q [DecidedStrictness] Source # qLocation :: Q Loc Source # qRunIO :: IO a -> Q a Source # qGetPackageRoot :: Q FilePath Source # qAddDependentFile :: FilePath -> Q () Source # qAddTempFile :: String -> Q FilePath Source # qAddTopDecls :: [Dec] -> Q () Source # qAddForeignFilePath :: ForeignSrcLang -> String -> Q () Source # qAddModFinalizer :: Q () -> Q () Source # qAddCorePlugin :: String -> Q () Source # qGetQ :: Typeable a => Q (Maybe a) Source # qPutQ :: Typeable a => a -> Q () Source # qIsExtEnabled :: Extension -> Q Bool Source # qExtsEnabled :: Q [Extension] Source # qPutDoc :: DocLoc -> String -> Q () Source # qGetDoc :: DocLoc -> Q (Maybe String) Source #
Quote Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods newName :: String -> Q Name Source #
Monoid a => Monoid (Q a) Source # | Since: ghc-internal-2.17.0.0
Instance details Defined in GHC.Internal.TH.Syntax Methods mempty :: Q a Source # mappend :: Q a -> Q a -> Q a Source # mconcat :: [Q a] -> Q a Source #
Semigroup a => Semigroup (Q a) Source # | Since: ghc-internal-2.17.0.0
Instance details Defined in GHC.Internal.TH.Syntax Methods (<>) :: Q a -> Q a -> Q a Source # sconcat :: NonEmpty (Q a) -> Q a Source # stimes :: Integral b => b -> Q a -> Q a Source #

data Pat Source #

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} = e
InfixP Pat Name Pat |
    foo ({x :+ y}) = e
UInfixP Pat Name Pat |
    foo ({x :+ y}) = e
See Language.Haskell.TH.Syntax
ParensP Pat |
    {(p)}
See Language.Haskell.TH.Syntax
TildeP Pat |
    { ~p }
BangP Pat |
    { !p }
AsP Name Pat |
    { x @ p }
WildP |
    { _ }
RecP Name [FieldPat] |
    f (Pt { pointx = x }) = g x
ListP [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 }

#### Instances

Instances details

Ppr Pat Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Pat -> Doc Source # ppr_list :: [Pat] -> Doc Source #
Eq Pat Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Pat -> Pat -> Bool Source # (/=) :: Pat -> Pat -> Bool Source #
Ord Pat Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Pat -> Pat -> Ordering Source # (<) :: Pat -> Pat -> Bool Source # (<=) :: Pat -> Pat -> Bool Source # (>) :: Pat -> Pat -> Bool Source # (>=) :: Pat -> Pat -> Bool Source # max :: Pat -> Pat -> Pat Source # min :: Pat -> Pat -> Pat Source #
Data Pat Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pat -> c Pat Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pat Source # toConstr :: Pat -> Constr Source # dataTypeOf :: Pat -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pat) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pat) Source # gmapT :: (forall b. Data b => b -> b) -> Pat -> Pat Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pat -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pat -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Pat -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Pat -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pat -> m Pat Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pat -> m Pat Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pat -> m Pat Source #
Generic Pat Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Pat |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Pat = D1 ('MetaData "Pat" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((((C1 ('MetaCons "LitP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Lit)) :+: C1 ('MetaCons "VarP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "TupP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat])) :+: (C1 ('MetaCons "UnboxedTupP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat])) :+: C1 ('MetaCons "UnboxedSumP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumAlt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)))))) :+: ((C1 ('MetaCons "ConP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]))) :+: C1 ('MetaCons "InfixP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))) :+: (C1 ('MetaCons "UInfixP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "ParensP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)) :+: C1 ('MetaCons "TildeP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))))) :+: (((C1 ('MetaCons "BangP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)) :+: C1 ('MetaCons "AsP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "WildP" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "RecP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldPat])) :+: C1 ('MetaCons "ListP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]))))) :+: ((C1 ('MetaCons "SigP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "ViewP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "TypeP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons "InvisP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "OrP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty Pat))))))))
Methods from :: Pat -> Rep Pat x Source # to :: Rep Pat x -> Pat Source #
Show Pat Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Pat -> ShowS Source # show :: Pat -> String Source # showList :: [Pat] -> ShowS Source #
Lift Pat Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Pat -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Pat -> Code m Pat Source #
type Rep Pat Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Pat = D1 ('MetaData "Pat" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((((C1 ('MetaCons "LitP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Lit)) :+: C1 ('MetaCons "VarP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "TupP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat])) :+: (C1 ('MetaCons "UnboxedTupP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat])) :+: C1 ('MetaCons "UnboxedSumP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumAlt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)))))) :+: ((C1 ('MetaCons "ConP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]))) :+: C1 ('MetaCons "InfixP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))) :+: (C1 ('MetaCons "UInfixP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "ParensP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)) :+: C1 ('MetaCons "TildeP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))))) :+: (((C1 ('MetaCons "BangP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)) :+: C1 ('MetaCons "AsP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "WildP" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "RecP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldPat])) :+: C1 ('MetaCons "ListP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pat]))))) :+: ((C1 ('MetaCons "SigP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "ViewP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat))) :+: (C1 ('MetaCons "TypeP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons "InvisP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "OrP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty Pat))))))))

data Stmt Source #

A single statement, as in `do`-notation.

Constructors

BindS Pat Exp |
    p <- e
LetS [Dec] |
    { let { x=e1; y=e2 } }
NoBindS Exp |
    e
ParS [[Stmt]] | `x <- e1 | s2, s3 | s4` (in `CompE`)
RecS [Stmt] |
    rec { s1; s2 }

#### Instances

Instances details

Ppr Stmt Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Stmt -> Doc Source # ppr_list :: [Stmt] -> Doc Source #
Eq Stmt Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Stmt -> Stmt -> Bool Source # (/=) :: Stmt -> Stmt -> Bool Source #
Ord Stmt Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Stmt -> Stmt -> Ordering Source # (<) :: Stmt -> Stmt -> Bool Source # (<=) :: Stmt -> Stmt -> Bool Source # (>) :: Stmt -> Stmt -> Bool Source # (>=) :: Stmt -> Stmt -> Bool Source # max :: Stmt -> Stmt -> Stmt Source # min :: Stmt -> Stmt -> Stmt Source #
Data Stmt Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Stmt -> c Stmt Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Stmt Source # toConstr :: Stmt -> Constr Source # dataTypeOf :: Stmt -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Stmt) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Stmt) Source # gmapT :: (forall b. Data b => b -> b) -> Stmt -> Stmt Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Stmt -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Stmt -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Stmt -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Stmt -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Stmt -> m Stmt Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Stmt -> m Stmt Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Stmt -> m Stmt Source #
Generic Stmt Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Stmt |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Stmt = D1 ('MetaData "Stmt" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "BindS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "LetS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: (C1 ('MetaCons "NoBindS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons "ParS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[Stmt]])) :+: C1 ('MetaCons "RecS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])))))
Methods from :: Stmt -> Rep Stmt x Source # to :: Rep Stmt x -> Stmt Source #
Show Stmt Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Stmt -> ShowS Source # show :: Stmt -> String Source # showList :: [Stmt] -> ShowS Source #
Lift Stmt Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Stmt -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Stmt -> Code m Stmt Source #
type Rep Stmt Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Stmt = D1 ('MetaData "Stmt" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "BindS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "LetS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: (C1 ('MetaCons "NoBindS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: (C1 ('MetaCons "ParS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[Stmt]])) :+: C1 ('MetaCons "RecS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])))))

data Con Source #

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).

Constructors

NormalC Name [BangType] |
    C Int a
RecC Name [VarBangType] |
    C { v :: Int, w :: a }
InfixC BangType Name BangType |
    Int :+ a
ForallC [TyVarBndr Specificity] Cxt Con |
    forall a. Eq a => C [a]
GadtC |
Fields [Name] The list of constructors, corresponding to the GADT constructor syntax `C1, C2 :: a -> T b`. Invariant: the list must be non-empty. [BangType] The constructor arguments Type See Note [GADT return type]
RecGadtC |
    C :: { v :: Int } -> T b Int
Fields [Name] The list of constructors, corresponding to the GADT record constructor syntax `C1, C2 :: { fld :: a } -> T b`. Invariant: the list must be non-empty. [VarBangType] The constructor arguments Type See Note [GADT return type]

#### Instances

Instances details

Ppr Con Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Con -> Doc Source # ppr_list :: [Con] -> Doc Source #
Eq Con Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Con -> Con -> Bool Source # (/=) :: Con -> Con -> Bool Source #
Ord Con Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Con -> Con -> Ordering Source # (<) :: Con -> Con -> Bool Source # (<=) :: Con -> Con -> Bool Source # (>) :: Con -> Con -> Bool Source # (>=) :: Con -> Con -> Bool Source # max :: Con -> Con -> Con Source # min :: Con -> Con -> Con Source #
Data Con Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Con -> c Con Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Con Source # toConstr :: Con -> Constr Source # dataTypeOf :: Con -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Con) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Con) Source # gmapT :: (forall b. Data b => b -> b) -> Con -> Con Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Con -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Con -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Con -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Con -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Con -> m Con Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Con -> m Con Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Con -> m Con Source #
Generic Con Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Con |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Con = D1 ('MetaData "Con" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "NormalC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType])) :+: (C1 ('MetaCons "RecC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType])) :+: C1 ('MetaCons "InfixC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BangType) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BangType))))) :+: (C1 ('MetaCons "ForallC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con))) :+: (C1 ('MetaCons "GadtC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "RecGadtC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))))
Methods from :: Con -> Rep Con x Source # to :: Rep Con x -> Con Source #
Show Con Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Con -> ShowS Source # show :: Con -> String Source # showList :: [Con] -> ShowS Source #
Lift Con Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Con -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Con -> Code m Con Source #
type Rep Con Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Con = D1 ('MetaData "Con" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "NormalC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType])) :+: (C1 ('MetaCons "RecC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType])) :+: C1 ('MetaCons "InfixC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BangType) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BangType))))) :+: (C1 ('MetaCons "ForallC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con))) :+: (C1 ('MetaCons "GadtC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [BangType]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "RecGadtC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [VarBangType]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))))

data Type Source #

A Haskell type.

Constructors

ForallT [TyVarBndr Specificity] Cxt Type |
    forall <vars>. <ctxt> => <type>
ForallVisT [TyVarBndr ()] Type |
    forall <vars> -> <type>
AppT Type Type |
    T a b
AppKindT Type Kind |
    T @k t
SigT Type Kind |
    t :: k
VarT Name |
    a
ConT Name |
    T
PromotedT Name |
    'T
InfixT Type Name Type |
    T + T
UInfixT Type Name Type |
    T + T
See Language.Haskell.TH.Syntax
PromotedInfixT Type Name Type |
    T :+: T
PromotedUInfixT Type Name Type |
    T :+: T
See Language.Haskell.TH.Syntax
ParensT 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 |
    *
ConstraintT |
    Constraint
LitT TyLit | `0`, `1`, `2`, etc.
WildCardT |
    _
ImplicitParamT String Type |
    ?x :: t

#### Instances

Instances details

Ppr Type Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Type -> Doc Source # ppr_list :: [Type] -> Doc Source #
Eq Type Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Type -> Type -> Bool Source # (/=) :: Type -> Type -> Bool Source #
Ord Type Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Type -> Type -> Ordering Source # (<) :: Type -> Type -> Bool Source # (<=) :: Type -> Type -> Bool Source # (>) :: Type -> Type -> Bool Source # (>=) :: Type -> Type -> Bool Source # max :: Type -> Type -> Type Source # min :: Type -> Type -> Type Source #
Data Type Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Type -> c Type Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Type Source # toConstr :: Type -> Constr Source # dataTypeOf :: Type -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Type) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Type) Source # gmapT :: (forall b. Data b => b -> b) -> Type -> Type Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Type -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Type -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Type -> m Type Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type Source #
Generic Type Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Type |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Type = D1 ('MetaData "Type" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((((C1 ('MetaCons "ForallT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons "ForallVisT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr ()]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "AppT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "AppKindT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "SigT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))) :+: (C1 ('MetaCons "VarT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "ConT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))) :+: ((C1 ('MetaCons "PromotedT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "InfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "UInfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))) :+: ((C1 ('MetaCons "PromotedInfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "PromotedUInfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: (C1 ('MetaCons "ParensT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "TupleT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))))) :+: (((C1 ('MetaCons "UnboxedTupleT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: (C1 ('MetaCons "UnboxedSumT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)) :+: C1 ('MetaCons "ArrowT" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MulArrowT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EqualityT" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ListT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PromotedTupleT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))) :+: ((C1 ('MetaCons "PromotedNilT" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PromotedConsT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StarT" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ConstraintT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LitT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyLit))) :+: (C1 ('MetaCons "WildCardT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitParamT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))))
Methods from :: Type -> Rep Type x Source # to :: Rep Type x -> Type Source #
Show Type Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Type -> ShowS Source # show :: Type -> String Source # showList :: [Type] -> ShowS Source #
Lift Type Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Type -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Type -> Code m Type Source #
type Rep Type Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Type = D1 ('MetaData "Type" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((((C1 ('MetaCons "ForallT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr Specificity]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons "ForallVisT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr ()]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "AppT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "AppKindT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "SigT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))) :+: (C1 ('MetaCons "VarT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "ConT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))) :+: ((C1 ('MetaCons "PromotedT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "InfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "UInfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))) :+: ((C1 ('MetaCons "PromotedInfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: C1 ('MetaCons "PromotedUInfixT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: (C1 ('MetaCons "ParensT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "TupleT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))))) :+: (((C1 ('MetaCons "UnboxedTupleT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: (C1 ('MetaCons "UnboxedSumT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SumArity)) :+: C1 ('MetaCons "ArrowT" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MulArrowT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EqualityT" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ListT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PromotedTupleT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))) :+: ((C1 ('MetaCons "PromotedNilT" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PromotedConsT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StarT" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ConstraintT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LitT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyLit))) :+: (C1 ('MetaCons "WildCardT" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitParamT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))))

data Dec Source #

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 | pragmas
- Fields Pragma
      { {-# INLINE [1] foo #-} }
DataFamilyD | data families (may also appear in [Dec] of `ClassD` and `InstanceD`)
- Fields Name [TyVarBndr BndrVis] (Maybe Kind)
      { data family T a b c :: * }
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 | open type families (may also appear in [Dec] of `ClassD` and `InstanceD`)
- Fields TypeFamilyHead
      { type family T a b c = (r :: *) | r -> a b }
ClosedTypeFamilyD 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 | Pattern Synonyms
Fields Name PatSynArgs PatSynDir Pat `{ pattern P v1 v2 .. vn <- p }` unidirectional or `{ pattern P v1 v2 .. vn = p }` implicit bidirectional or `{ pattern P v1 v2 .. vn <- p where P v1 v2 .. vn = e }` explicit bidirectional also, besides prefix pattern synonyms, both infix and record pattern synonyms are supported. See `PatSynArgs` for details
PatSynSigD Name PatSynType | A 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.

#### Instances

Instances details

Ppr Dec Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Dec -> Doc Source # ppr_list :: [Dec] -> Doc Source #
Eq Dec Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Dec -> Dec -> Bool Source # (/=) :: Dec -> Dec -> Bool Source #
Ord Dec Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Dec -> Dec -> Ordering Source # (<) :: Dec -> Dec -> Bool Source # (<=) :: Dec -> Dec -> Bool Source # (>) :: Dec -> Dec -> Bool Source # (>=) :: Dec -> Dec -> Bool Source # max :: Dec -> Dec -> Dec Source # min :: Dec -> Dec -> Dec Source #
Data Dec Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Dec -> c Dec Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Dec Source # toConstr :: Dec -> Constr Source # dataTypeOf :: Dec -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Dec) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Dec) Source # gmapT :: (forall b. Data b => b -> b) -> Dec -> Dec Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Dec -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Dec -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Dec -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Dec -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Dec -> m Dec Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Dec -> m Dec Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Dec -> m Dec Source #
Generic Dec Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Dec |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Dec = D1 ('MetaData "Dec" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((((C1 ('MetaCons "FunD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause])) :+: (C1 ('MetaCons "ValD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: C1 ('MetaCons "DataD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))))) :+: (C1 ('MetaCons "NewtypeD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))) :+: (C1 ('MetaCons "TypeDataD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]))) :+: C1 ('MetaCons "TySynD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))) :+: ((C1 ('MetaCons "ClassD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunDep]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec])))) :+: (C1 ('MetaCons "InstanceD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Overlap)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: C1 ('MetaCons "SigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "KiSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "ForeignD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Foreign))) :+: (C1 ('MetaCons "InfixD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Fixity) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NamespaceSpecifier) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: C1 ('MetaCons "DefaultD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type])))))) :+: (((C1 ('MetaCons "PragmaD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pragma)) :+: (C1 ('MetaCons "DataFamilyD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)))) :+: C1 ('MetaCons "DataInstD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))))) :+: (C1 ('MetaCons "NewtypeInstD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))) :+: (C1 ('MetaCons "TySynInstD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TySynEqn)) :+: C1 ('MetaCons "OpenTypeFamilyD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeFamilyHead))))) :+: ((C1 ('MetaCons "ClosedTypeFamilyD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeFamilyHead) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TySynEqn])) :+: (C1 ('MetaCons "RoleAnnotD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: C1 ('MetaCons "StandaloneDerivD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe DerivStrategy)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))) :+: ((C1 ('MetaCons "DefaultSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "PatSynD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynArgs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynDir) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))) :+: (C1 ('MetaCons "PatSynSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: C1 ('MetaCons "ImplicitParamBindD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))))
Methods from :: Dec -> Rep Dec x Source # to :: Rep Dec x -> Dec Source #
Show Dec Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Dec -> ShowS Source # show :: Dec -> String Source # showList :: [Dec] -> ShowS Source #
Lift Dec Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Dec -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Dec -> Code m Dec Source #
type Rep Dec Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Dec = D1 ('MetaData "Dec" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((((C1 ('MetaCons "FunD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause])) :+: (C1 ('MetaCons "ValD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Body) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: C1 ('MetaCons "DataD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))))) :+: (C1 ('MetaCons "NewtypeD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))) :+: (C1 ('MetaCons "TypeDataD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]))) :+: C1 ('MetaCons "TySynD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))) :+: ((C1 ('MetaCons "ClassD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FunDep]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec])))) :+: (C1 ('MetaCons "InstanceD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Overlap)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dec]))) :+: C1 ('MetaCons "SigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "KiSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "ForeignD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Foreign))) :+: (C1 ('MetaCons "InfixD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Fixity) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NamespaceSpecifier) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: C1 ('MetaCons "DefaultD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type])))))) :+: (((C1 ('MetaCons "PragmaD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pragma)) :+: (C1 ('MetaCons "DataFamilyD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)))) :+: C1 ('MetaCons "DataInstD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Con]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))))) :+: (C1 ('MetaCons "NewtypeInstD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Con) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DerivClause])))) :+: (C1 ('MetaCons "TySynInstD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TySynEqn)) :+: C1 ('MetaCons "OpenTypeFamilyD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeFamilyHead))))) :+: ((C1 ('MetaCons "ClosedTypeFamilyD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeFamilyHead) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TySynEqn])) :+: (C1 ('MetaCons "RoleAnnotD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: C1 ('MetaCons "StandaloneDerivD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe DerivStrategy)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))) :+: ((C1 ('MetaCons "DefaultSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "PatSynD" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynArgs)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynDir) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pat)))) :+: (C1 ('MetaCons "PatSynSigD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: C1 ('MetaCons "ImplicitParamBindD" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))))

type BangType = (Bang, Type) Source #

A type with a strictness annotation, as in data constructors. See `Con`.

type VarBangType = (Name, Bang, Type) Source #

`BangType`, but for record fields. See `Con`.

type FieldExp = (Name, Exp) Source #

A (field name, expression) pair. See `RecConE` and `RecUpdE`.

type FieldPat = (Name, Pat) Source #

A (field name, pattern) pair. See `RecP`.

data Name Source #

An abstract type representing names in the syntax tree.

`Name`s can be constructed in several ways, which come with different name-capture guarantees (see Language.Haskell.TH.Syntax for an explanation of name capture):

- the built-in syntax `'f` and `''T` can be used to construct names, The expression `'f` gives a `Name` which refers to the value `f` currently in scope, and `''T` gives a `Name` which refers to the type `T` currently in scope. These names can never be captured.
- `lookupValueName` and `lookupTypeName` are similar to `'f` and `''T` respectively, but the `Name`s are looked up at the point where the current splice is being run. These names can never be captured.
- `newName` monadically 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

Name OccName NameFlavour |

#### Instances

Instances details

Ppr Name Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Name -> Doc Source # ppr_list :: [Name] -> Doc Source #
Eq Name Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Name -> Name -> Bool Source # (/=) :: Name -> Name -> Bool Source #
Ord Name Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Name -> Name -> Ordering Source # (<) :: Name -> Name -> Bool Source # (<=) :: Name -> Name -> Bool Source # (>) :: Name -> Name -> Bool Source # (>=) :: Name -> Name -> Bool Source # max :: Name -> Name -> Name Source # min :: Name -> Name -> Name Source #
Data Name Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Name -> c Name Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Name Source # toConstr :: Name -> Constr Source # dataTypeOf :: Name -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Name) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Name) Source # gmapT :: (forall b. Data b => b -> b) -> Name -> Name Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Name -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Name -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Name -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Name -> m Name Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Name -> m Name Source #
Generic Name Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Name |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Name = D1 ('MetaData "Name" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Name" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameFlavour)))
Methods from :: Name -> Rep Name x Source # to :: Rep Name x -> Name Source #
Show Name Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Name -> ShowS Source # show :: Name -> String Source # showList :: [Name] -> ShowS Source #
Lift Name Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Name -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Name -> Code m Name Source #
type Rep Name Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Name = D1 ('MetaData "Name" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Name" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameFlavour)))

data FunDep Source #

Functional dependency syntax, as in a class declaration.

Constructors

FunDep [Name] [Name] |
    class C a b {| a -> b}

#### Instances

Instances details

Ppr FunDep Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: FunDep -> Doc Source # ppr_list :: [FunDep] -> Doc Source #
Eq FunDep Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: FunDep -> FunDep -> Bool Source # (/=) :: FunDep -> FunDep -> Bool Source #
Ord FunDep Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: FunDep -> FunDep -> Ordering Source # (<) :: FunDep -> FunDep -> Bool Source # (<=) :: FunDep -> FunDep -> Bool Source # (>) :: FunDep -> FunDep -> Bool Source # (>=) :: FunDep -> FunDep -> Bool Source # max :: FunDep -> FunDep -> FunDep Source # min :: FunDep -> FunDep -> FunDep Source #
Data FunDep Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FunDep -> c FunDep Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FunDep Source # toConstr :: FunDep -> Constr Source # dataTypeOf :: FunDep -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FunDep) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FunDep) Source # gmapT :: (forall b. Data b => b -> b) -> FunDep -> FunDep Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FunDep -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FunDep -> r Source # gmapQ :: (forall d. Data d => d -> u) -> FunDep -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> FunDep -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FunDep -> m FunDep Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FunDep -> m FunDep Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FunDep -> m FunDep Source #
Generic FunDep Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep FunDep |
Instance details Defined in GHC.Internal.TH.Syntax type Rep FunDep = D1 ('MetaData "FunDep" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "FunDep" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))
Methods from :: FunDep -> Rep FunDep x Source # to :: Rep FunDep x -> FunDep Source #
Show FunDep Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> FunDep -> ShowS Source # show :: FunDep -> String Source # showList :: [FunDep] -> ShowS Source #
Lift FunDep Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => FunDep -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => FunDep -> Code m FunDep Source #
type Rep FunDep Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep FunDep = D1 ('MetaData "FunDep" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "FunDep" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))

type Pred = Type Source #

Since the advent of `ConstraintKinds`, constraints are really just types. Equality constraints use the `EqualityT` constructor. Constraints may also be tuples of other constraints.

data RuleBndr Source #

A binder found in the `forall` of a `RULES` pragma.

Constructors

RuleVar Name |
    forall {a} ... .
TypedRuleVar Name Type |
    forall {(a :: t)} ... .

#### Instances

Instances details

Ppr RuleBndr Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: RuleBndr -> Doc Source # ppr_list :: [RuleBndr] -> Doc Source #
Eq RuleBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: RuleBndr -> RuleBndr -> Bool Source # (/=) :: RuleBndr -> RuleBndr -> Bool Source #
Ord RuleBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: RuleBndr -> RuleBndr -> Ordering Source # (<) :: RuleBndr -> RuleBndr -> Bool Source # (<=) :: RuleBndr -> RuleBndr -> Bool Source # (>) :: RuleBndr -> RuleBndr -> Bool Source # (>=) :: RuleBndr -> RuleBndr -> Bool Source # max :: RuleBndr -> RuleBndr -> RuleBndr Source # min :: RuleBndr -> RuleBndr -> RuleBndr Source #
Data RuleBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RuleBndr -> c RuleBndr Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RuleBndr Source # toConstr :: RuleBndr -> Constr Source # dataTypeOf :: RuleBndr -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RuleBndr) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RuleBndr) Source # gmapT :: (forall b. Data b => b -> b) -> RuleBndr -> RuleBndr Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RuleBndr -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RuleBndr -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RuleBndr -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RuleBndr -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RuleBndr -> m RuleBndr Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleBndr -> m RuleBndr Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleBndr -> m RuleBndr Source #
Generic RuleBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep RuleBndr |
Instance details Defined in GHC.Internal.TH.Syntax type Rep RuleBndr = D1 ('MetaData "RuleBndr" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "RuleVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TypedRuleVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))
Methods from :: RuleBndr -> Rep RuleBndr x Source # to :: Rep RuleBndr x -> RuleBndr Source #
Show RuleBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> RuleBndr -> ShowS Source # show :: RuleBndr -> String Source # showList :: [RuleBndr] -> ShowS Source #
Lift RuleBndr Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => RuleBndr -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => RuleBndr -> Code m RuleBndr Source #
type Rep RuleBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep RuleBndr = D1 ('MetaData "RuleBndr" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "RuleVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TypedRuleVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))

data TySynEqn Source #

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)

Constructors

TySynEqn (Maybe [TyVarBndr ()]) Type Type |

#### Instances

Instances details

Eq TySynEqn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: TySynEqn -> TySynEqn -> Bool Source # (/=) :: TySynEqn -> TySynEqn -> Bool Source #
Ord TySynEqn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: TySynEqn -> TySynEqn -> Ordering Source # (<) :: TySynEqn -> TySynEqn -> Bool Source # (<=) :: TySynEqn -> TySynEqn -> Bool Source # (>) :: TySynEqn -> TySynEqn -> Bool Source # (>=) :: TySynEqn -> TySynEqn -> Bool Source # max :: TySynEqn -> TySynEqn -> TySynEqn Source # min :: TySynEqn -> TySynEqn -> TySynEqn Source #
Data TySynEqn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TySynEqn -> c TySynEqn Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TySynEqn Source # toConstr :: TySynEqn -> Constr Source # dataTypeOf :: TySynEqn -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TySynEqn) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TySynEqn) Source # gmapT :: (forall b. Data b => b -> b) -> TySynEqn -> TySynEqn Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TySynEqn -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TySynEqn -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TySynEqn -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TySynEqn -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TySynEqn -> m TySynEqn Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TySynEqn -> m TySynEqn Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TySynEqn -> m TySynEqn Source #
Generic TySynEqn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep TySynEqn |
Instance details Defined in GHC.Internal.TH.Syntax type Rep TySynEqn = D1 ('MetaData "TySynEqn" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "TySynEqn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
Methods from :: TySynEqn -> Rep TySynEqn x Source # to :: Rep TySynEqn x -> TySynEqn Source #
Show TySynEqn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> TySynEqn -> ShowS Source # show :: TySynEqn -> String Source # showList :: [TySynEqn] -> ShowS Source #
Lift TySynEqn Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TySynEqn -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TySynEqn -> Code m TySynEqn Source #
type Rep TySynEqn Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep TySynEqn = D1 ('MetaData "TySynEqn" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "TySynEqn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))

data InjectivityAnn Source #

Injectivity annotation as in an injective type family

Constructors

InjectivityAnn Name [Name] |

#### Instances

Instances details

Ppr InjectivityAnn Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: InjectivityAnn -> Doc Source # ppr_list :: [InjectivityAnn] -> Doc Source #
Eq InjectivityAnn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: InjectivityAnn -> InjectivityAnn -> Bool Source # (/=) :: InjectivityAnn -> InjectivityAnn -> Bool Source #
Ord InjectivityAnn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: InjectivityAnn -> InjectivityAnn -> Ordering Source # (<) :: InjectivityAnn -> InjectivityAnn -> Bool Source # (<=) :: InjectivityAnn -> InjectivityAnn -> Bool Source # (>) :: InjectivityAnn -> InjectivityAnn -> Bool Source # (>=) :: InjectivityAnn -> InjectivityAnn -> Bool Source # max :: InjectivityAnn -> InjectivityAnn -> InjectivityAnn Source # min :: InjectivityAnn -> InjectivityAnn -> InjectivityAnn Source #
Data InjectivityAnn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InjectivityAnn -> c InjectivityAnn Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InjectivityAnn Source # toConstr :: InjectivityAnn -> Constr Source # dataTypeOf :: InjectivityAnn -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InjectivityAnn) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InjectivityAnn) Source # gmapT :: (forall b. Data b => b -> b) -> InjectivityAnn -> InjectivityAnn Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InjectivityAnn -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InjectivityAnn -> r Source # gmapQ :: (forall d. Data d => d -> u) -> InjectivityAnn -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> InjectivityAnn -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> InjectivityAnn -> m InjectivityAnn Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InjectivityAnn -> m InjectivityAnn Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InjectivityAnn -> m InjectivityAnn Source #
Generic InjectivityAnn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep InjectivityAnn |
Instance details Defined in GHC.Internal.TH.Syntax type Rep InjectivityAnn = D1 ('MetaData "InjectivityAnn" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "InjectivityAnn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))
Methods from :: InjectivityAnn -> Rep InjectivityAnn x Source # to :: Rep InjectivityAnn x -> InjectivityAnn Source #
Show InjectivityAnn Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> InjectivityAnn -> ShowS Source # show :: InjectivityAnn -> String Source # showList :: [InjectivityAnn] -> ShowS Source #
Lift InjectivityAnn Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => InjectivityAnn -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => InjectivityAnn -> Code m InjectivityAnn Source #
type Rep InjectivityAnn Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep InjectivityAnn = D1 ('MetaData "InjectivityAnn" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "InjectivityAnn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])))

type Kind = Type Source #

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`.

data Overlap Source #

Varieties of allowed instance overlap.

Constructors

Overlappable | May be overlapped by more specific instances
Overlapping | May overlap a more general instance
Overlaps | Both `Overlapping` and `Overlappable`
Incoherent | Both `Overlapping` and `Overlappable`, and pick an arbitrary one if multiple choices are available.

#### Instances

Instances details

Eq Overlap Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Overlap -> Overlap -> Bool Source # (/=) :: Overlap -> Overlap -> Bool Source #
Ord Overlap Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Overlap -> Overlap -> Ordering Source # (<) :: Overlap -> Overlap -> Bool Source # (<=) :: Overlap -> Overlap -> Bool Source # (>) :: Overlap -> Overlap -> Bool Source # (>=) :: Overlap -> Overlap -> Bool Source # max :: Overlap -> Overlap -> Overlap Source # min :: Overlap -> Overlap -> Overlap Source #
Data Overlap Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Overlap -> c Overlap Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Overlap Source # toConstr :: Overlap -> Constr Source # dataTypeOf :: Overlap -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Overlap) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Overlap) Source # gmapT :: (forall b. Data b => b -> b) -> Overlap -> Overlap Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Overlap -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Overlap -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Overlap -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Overlap -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Overlap -> m Overlap Source #
Generic Overlap Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Overlap |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Overlap = D1 ('MetaData "Overlap" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "Overlappable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Overlapping" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Overlaps" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Incoherent" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: Overlap -> Rep Overlap x Source # to :: Rep Overlap x -> Overlap Source #
Show Overlap Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Overlap -> ShowS Source # show :: Overlap -> String Source # showList :: [Overlap] -> ShowS Source #
Lift Overlap Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Overlap -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Overlap -> Code m Overlap Source #
type Rep Overlap Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Overlap = D1 ('MetaData "Overlap" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "Overlappable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Overlapping" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Overlaps" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Incoherent" 'PrefixI 'False) (U1 :: Type -> Type)))

data DerivClause Source #

A single `deriving` clause at the end of a datatype declaration.

Constructors

DerivClause (Maybe DerivStrategy) Cxt |
    { deriving stock (Eq, Ord) }

#### Instances

Instances details

Eq DerivClause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: DerivClause -> DerivClause -> Bool Source # (/=) :: DerivClause -> DerivClause -> Bool Source #
Ord DerivClause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: DerivClause -> DerivClause -> Ordering Source # (<) :: DerivClause -> DerivClause -> Bool Source # (<=) :: DerivClause -> DerivClause -> Bool Source # (>) :: DerivClause -> DerivClause -> Bool Source # (>=) :: DerivClause -> DerivClause -> Bool Source # max :: DerivClause -> DerivClause -> DerivClause Source # min :: DerivClause -> DerivClause -> DerivClause Source #
Data DerivClause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DerivClause -> c DerivClause Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DerivClause Source # toConstr :: DerivClause -> Constr Source # dataTypeOf :: DerivClause -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DerivClause) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DerivClause) Source # gmapT :: (forall b. Data b => b -> b) -> DerivClause -> DerivClause Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DerivClause -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DerivClause -> r Source # gmapQ :: (forall d. Data d => d -> u) -> DerivClause -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> DerivClause -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DerivClause -> m DerivClause Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivClause -> m DerivClause Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivClause -> m DerivClause Source #
Generic DerivClause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep DerivClause |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DerivClause = D1 ('MetaData "DerivClause" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "DerivClause" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe DerivStrategy)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt)))
Methods from :: DerivClause -> Rep DerivClause x Source # to :: Rep DerivClause x -> DerivClause Source #
Show DerivClause Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> DerivClause -> ShowS Source # show :: DerivClause -> String Source # showList :: [DerivClause] -> ShowS Source #
Lift DerivClause Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DerivClause -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DerivClause -> Code m DerivClause Source #
type Rep DerivClause Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DerivClause = D1 ('MetaData "DerivClause" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "DerivClause" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe DerivStrategy)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cxt)))

data DerivStrategy Source #

What the user explicitly requests when deriving an instance with `-XDerivingStrategies`.

Constructors

StockStrategy |
    deriving {stock} C
AnyclassStrategy | `deriving {anyclass} C`, `-XDeriveAnyClass`
NewtypeStrategy | `deriving {newtype} C`, `-XGeneralizedNewtypeDeriving`
ViaStrategy Type | `deriving C {via T}`, `-XDerivingVia`

#### Instances

Instances details

Eq DerivStrategy Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: DerivStrategy -> DerivStrategy -> Bool Source # (/=) :: DerivStrategy -> DerivStrategy -> Bool Source #
Ord DerivStrategy Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: DerivStrategy -> DerivStrategy -> Ordering Source # (<) :: DerivStrategy -> DerivStrategy -> Bool Source # (<=) :: DerivStrategy -> DerivStrategy -> Bool Source # (>) :: DerivStrategy -> DerivStrategy -> Bool Source # (>=) :: DerivStrategy -> DerivStrategy -> Bool Source # max :: DerivStrategy -> DerivStrategy -> DerivStrategy Source # min :: DerivStrategy -> DerivStrategy -> DerivStrategy Source #
Data DerivStrategy Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DerivStrategy -> c DerivStrategy Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DerivStrategy Source # toConstr :: DerivStrategy -> Constr Source # dataTypeOf :: DerivStrategy -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DerivStrategy) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DerivStrategy) Source # gmapT :: (forall b. Data b => b -> b) -> DerivStrategy -> DerivStrategy Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DerivStrategy -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DerivStrategy -> r Source # gmapQ :: (forall d. Data d => d -> u) -> DerivStrategy -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> DerivStrategy -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DerivStrategy -> m DerivStrategy Source #
Generic DerivStrategy Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep DerivStrategy |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DerivStrategy = D1 ('MetaData "DerivStrategy" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "StockStrategy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AnyclassStrategy" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NewtypeStrategy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ViaStrategy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
Methods from :: DerivStrategy -> Rep DerivStrategy x Source # to :: Rep DerivStrategy x -> DerivStrategy Source #
Show DerivStrategy Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> DerivStrategy -> ShowS Source # show :: DerivStrategy -> String Source # showList :: [DerivStrategy] -> ShowS Source #
Lift DerivStrategy Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DerivStrategy -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DerivStrategy -> Code m DerivStrategy Source #
type Rep DerivStrategy Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DerivStrategy = D1 ('MetaData "DerivStrategy" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "StockStrategy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AnyclassStrategy" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NewtypeStrategy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ViaStrategy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))

newtype Code (m :: Type -> Type) (a :: TYPE r) Source #

Represents an expression which has type `a`, built in monadic context `m`. Built on top of `TExp`, typed expressions allow for type-safe splicing via:

- typed quotes, written as `[|| ... ||]` where `...` is an expression; if that expression has type `a`, then the quotation has type `Quote m => Code m a`
- typed splices inside of typed quotes, written as `$$(...)` where `...` is an arbitrary expression of type `Quote m => Code m a`

Traditional expression quotes and splices let us construct ill-typed expressions:

    >>> fmap ppr $ runQ (unTypeCode [| True == $( [| "foo" |] ) |])
    GHC.Internal.Types.True GHC.Internal.Classes.== "foo"
    >>> GHC.Internal.Types.True GHC.Internal.Classes.== "foo"
    <interactive> error:
        • Couldn't match expected type ‘Bool’ with actual type ‘[Char]’
        • In the second argument of ‘(==)’, namely ‘"foo"’
          In the expression: True == "foo"
          In an equation for ‘it’: it = True == "foo"

With typed expressions, the type error occurs when constructing the Template Haskell expression:

    >>> fmap ppr $ runQ (unTypeCode [|| True == $$( [|| "foo" ||] ) ||])
    <interactive> error:
        • Couldn't match type ‘[Char]’ with ‘Bool’
          Expected type: Code Q Bool
            Actual type: Code Q [Char]
        • In the Template Haskell quotation [|| "foo" ||]
          In the expression: [|| "foo" ||]
          In the Template Haskell splice $$([|| "foo" ||])

Constructors

Code |
Fields examineCode :: m (TExp a) Underlying monadic value

newtype ModName Source #

The name of a module.

Constructors

ModName String |

#### Instances

Instances details

Eq ModName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: ModName -> ModName -> Bool Source # (/=) :: ModName -> ModName -> Bool Source #
Ord ModName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: ModName -> ModName -> Ordering Source # (<) :: ModName -> ModName -> Bool Source # (<=) :: ModName -> ModName -> Bool Source # (>) :: ModName -> ModName -> Bool Source # (>=) :: ModName -> ModName -> Bool Source # max :: ModName -> ModName -> ModName Source # min :: ModName -> ModName -> ModName Source #
Data ModName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModName -> c ModName Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModName Source # toConstr :: ModName -> Constr Source # dataTypeOf :: ModName -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModName) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModName) Source # gmapT :: (forall b. Data b => b -> b) -> ModName -> ModName Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModName -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModName -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ModName -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ModName -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModName -> m ModName Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModName -> m ModName Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModName -> m ModName Source #
Generic ModName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep ModName |
Instance details Defined in GHC.Internal.TH.Syntax type Rep ModName = D1 ('MetaData "ModName" "GHC.Internal.TH.Syntax" "ghc-internal" 'True) (C1 ('MetaCons "ModName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))
Methods from :: ModName -> Rep ModName x Source # to :: Rep ModName x -> ModName Source #
Show ModName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> ModName -> ShowS Source # show :: ModName -> String Source # showList :: [ModName] -> ShowS Source #
Lift ModName Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => ModName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ModName -> Code m ModName Source #
type Rep ModName Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep ModName = D1 ('MetaData "ModName" "GHC.Internal.TH.Syntax" "ghc-internal" 'True) (C1 ('MetaCons "ModName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

addCorePlugin :: String -> Q () Source #

Adds a core plugin to the compilation pipeline.

`addCorePlugin m` has almost the same effect as passing `-fplugin=m` to ghc in the command line. The major difference is that the plugin module `m` must not belong to the current package. When TH executes, it is too late to tell the compiler that we needed to compile first a plugin module in the current package.

addDependentFile :: FilePath -> Q () Source #

Record external files that runIO is using (dependent upon). The compiler can then recognize that it should re-compile the Haskell file when an external file changes.

Expects an absolute file path.

Notes:

- ghc -M does not know about these dependencies - it does not execute TH.
- The dependency is based on file content, not a modification time

addForeignFile :: ForeignSrcLang -> String -> Q () Source #

Deprecated: Use `addForeignSource` instead

addForeignFilePath :: ForeignSrcLang -> FilePath -> Q () Source #

Same as `addForeignSource`, but expects to receive a path pointing to the foreign file instead of a `String` of its contents. Consider using this in conjunction with `addTempFile`.

This is a good alternative to `addForeignSource` when you are trying to directly link in an object file.

addForeignSource :: ForeignSrcLang -> String -> Q () Source #

Emit a foreign file which will be compiled and linked to the object for the current module. Currently only languages that can be compiled with the C compiler are supported, and the flags passed as part of -optc will be also applied to the C compiler invocation that will compile them.

Note that for non-C languages (for example C++) `extern C` directives must be used to get symbols that we can access from Haskell.

To get better errors, it is recommended to use #line pragmas when emitting C files, e.g.

    {-# LANGUAGE CPP #-}
    ...
    addForeignSource LangC $ unlines
      [ "#line " ++ show (865 + 1) ++ " " ++ show "libraries/ghc-internal/src/GHC/Internal/TH/Syntax.hs"
      , ...
      ]

addModFinalizer :: Q () -> Q () Source #

Add a finalizer that will run in the Q monad after the current module has been type checked. This only makes sense when run within a top-level splice.

The finalizer is given the local type environment at the splice point. Thus `reify` is able to find the local definitions when executed inside the finalizer.

addTempFile :: String -> Q FilePath Source #

Obtain a temporary file path with the given suffix. The compiler will delete this file after compilation.

addTopDecls :: [Dec] -> Q () Source #

Add additional top-level declarations. The added declarations will be type checked along with the current declaration group.

badIO :: String -> IO a Source #

bindCode :: Monad m => m a -> (a -> Code m b) -> Code m b Source #

Variant of `(>>=)` which allows effectful computations to be injected into code generation.

bindCode_ :: Monad m => m a -> Code m b -> Code m b Source #

Variant of `(>>)` which allows effectful computations to be injected into code generation.

cmpEq :: Ordering -> Bool Source #

Internal helper function.

compareBytes :: Bytes -> Bytes -> Ordering Source #

counter :: IORef Uniq Source #

defaultFixity :: Fixity Source #

Default fixity: `infixl 9`

eqBytes :: Bytes -> Bytes -> Bool Source #

extsEnabled :: Q [Extension] Source #

List all enabled language extensions.

getDoc :: DocLoc -> Q (Maybe String) Source #

Retrieves the Haddock documentation at the specified location, if one exists. It can be used to read documentation on things defined outside of the current module, provided that those modules were compiled with the `-haddock` flag.

getPackageRoot :: Q FilePath Source #

Get the package root for the current package which is being compiled. This can be set explicitly with the -package-root flag but is normally just the current working directory.

The motivation for this flag is to provide a principled means to remove the assumption from splices that they will be executed in the directory where the cabal file resides. Projects such as haskell-language-server can't and don't change directory when compiling files but instead set the -package-root flag appropriately.

getQ :: Typeable a => Q (Maybe a) Source #

Get state from the `Q` monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.

get_cons_names :: Con -> [Name] Source #

Internal helper function.

hoistCode :: Monad m => (forall x. m x -> n x) -> Code m a -> Code n a Source #

Modify the ambient monad used during code generation. For example, you can use `hoistCode` to handle a state effect: `handleState :: Code (StateT Int Q) a -> Code Q a handleState = hoistCode (flip runState 0)`

isExtEnabled :: Extension -> Q Bool Source #

Determine whether the given language extension is enabled in the `Q` monad.

isInstance :: Name -> [Type] -> Q Bool Source #

Is the list of instances returned by `reifyInstances` nonempty?

If you're confused by an instance not being visible despite being defined in the same module and above the splice in question, see the docs for `newDeclarationGroup` for a possible explanation.

joinCode :: Monad m => m (Code m a) -> Code m a Source #

A useful combinator for embedding monadic actions into `Code` `myCode :: ... => Code m a myCode = joinCode $ do x <- someSideEffect return (makeCodeWith x)`

liftCode :: forall a m. m (TExp a) -> Code m a Source #

Lift a monadic action producing code into the typed `Code` representation

location :: Q Loc Source #

The location at which this computation is spliced.

lookupName :: Bool -> String -> Q (Maybe Name) Source #

lookupTypeName :: String -> Q (Maybe Name) Source #

Look up the given name in the (type namespace of the) current splice's scope. See Language.Haskell.TH.Syntax for more details.

lookupValueName :: String -> Q (Maybe Name) Source #

Look up the given name in the (value namespace of the) current splice's scope. See Language.Haskell.TH.Syntax for more details.

manyName :: Name Source #

Synonym for `'`Many``, from `ghc-internal`.

maxPrecedence :: Int Source #

Highest allowed operator precedence for `Fixity` constructor (answer: 9)

memcmp :: Ptr a -> Ptr b -> CSize -> IO CInt Source #

mkNameG :: NameSpace -> String -> String -> String -> Name Source #

Used for 'x etc, but not available to the programmer

mkNameU :: String -> Uniq -> Name Source #

Only used internally

mkOccName :: String -> OccName Source #

Smart constructor for `OccName`

mkPkgName :: String -> PkgName Source #

Smart constructor for `PkgName`

mk_tup_name :: Int -> NameSpace -> Bool -> Name Source #

mkName :: String -> Name Source #

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 $f

In this case, `g` is desugared to

    g = Prelude.pi + 3

Note that `mkName` may be used with qualified names:

    mkName "Prelude.pi"

See also `dyn` for a useful combinator. The above example could be rewritten using `dyn` as

    f = [| pi + $(dyn "pi") |]

mkNameG_v :: String -> String -> String -> Name Source #

mkNameG_d :: String -> String -> String -> Name Source #

mkNameG_tc :: String -> String -> String -> Name Source #

mkNameL :: String -> Uniq -> Name Source #

Only used internally

mkNameS :: String -> Name Source #

unTypeCode :: forall a m. Quote m => Code m a -> m Exp Source #

Extract the untyped representation from the typed representation

mkModName :: String -> ModName Source #

Smart constructor for `ModName`

unsafeCodeCoerce :: forall a m. Quote m => m Exp -> Code m a Source #

Unsafely convert an untyped code representation into a typed code representation.

mkNameQ :: String -> String -> Name Source #

Only used internally

mkNameG_fld Source #

Arguments

:: String | package
-> String | module
-> String | parent (first constructor of parent type)
-> String | field name
-> Name |

modString :: ModName -> String Source #

Accessor for `ModName`

nameBase :: Name -> String Source #

The name without its module prefix.

#### Examples

Expand

    >>> nameBase ''Data.Either.Either
    "Either"
    >>> nameBase (mkName "foo")
    "foo"
    >>> nameBase (mkName "Module.foo")
    "foo"

nameModule :: Name -> Maybe String Source #

Module prefix of a name, if it exists.

#### Examples

Expand

    >>> nameModule ''Data.Either.Either
    Just "Data.Either"
    >>> nameModule (mkName "foo")
    Nothing
    >>> nameModule (mkName "Module.foo")
    Just "Module"

namePackage :: Name -> Maybe String Source #

A name's package, if it exists.

#### Examples

Expand

    >>> namePackage ''Data.Either.Either
    Just "base"
    >>> namePackage (mkName "foo")
    Nothing
    >>> namePackage (mkName "Module.foo")
    Nothing

nameSpace :: Name -> Maybe NameSpace Source #

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

Expand

    >>> nameSpace 'Prelude.id
    Just VarName
    >>> nameSpace (mkName "id")
    Nothing -- only works for top-level variable names
    >>> nameSpace 'Data.Maybe.Just
    Just DataName
    >>> nameSpace ''Data.Maybe.Maybe
    Just TcClsName
    >>> nameSpace ''Data.Ord.Ord
    Just TcClsName

newDeclarationGroup :: Q [Dec] Source #

Template Haskell is capable of reifying information about types and terms defined in previous declaration groups. Top-level declaration splices break up declaration groups.

For an example, consider this code block. We define a datatype `X` and then try to call `reify` on the datatype.

    module Check where

    data X = X
        deriving Eq

    $(do
        info <- reify ''X
        runIO $ print info
     )

This code fails to compile, noting that `X` is not available for reification at the site of `reify`. We can fix this by creating a new declaration group using an empty top-level splice:

    data X = X
        deriving Eq

    $(pure [])

    $(do
        info <- reify ''X
        runIO $ print info
     )

We provide `newDeclarationGroup` as a means of documenting this behavior and providing a name for the pattern.

Since top level splices infer the presence of the `$( ... )` brackets, we can also write:

    data X = X
        deriving Eq

    newDeclarationGroup

    $(do
        info <- reify ''X
        runIO $ print info
     )

newNameIO :: String -> IO Name Source #

occString :: OccName -> String Source #

Accessor for `OccName`

oneName :: Name Source #

Synonym for `'`One``, from `ghc-internal`.

pkgString :: PkgName -> String Source #

Accessor for `PkgName`

putDoc :: DocLoc -> String -> Q () Source #

Add Haddock documentation to the specified location. This will overwrite any documentation at the location if it already exists. This will reify the specified name, so it must be in scope when you call it. If you want to add documentation to something that you are currently splicing, you can use `addModFinalizer` e.g.

    do
      let nm = mkName "x"
      addModFinalizer $ putDoc (DeclDoc nm) "Hello"
      [d| $(varP nm) = 42 |]

The helper functions `withDecDoc` and `withDecsDoc` will do this for you, as will the `funD_doc` and other `_doc` combinators. You most likely want to have the `-haddock` flag turned on when using this. Adding documentation to anything outside of the current module will cause an error.

putQ :: Typeable a => a -> Q () Source #

Replace the state in the `Q` monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.

recover Source #

Arguments

:: Q a | handler to invoke on failure
-> Q a | computation to run
-> Q a |

Recover from errors raised by `reportError` or `fail`.

reify :: Name -> Q Info Source #

`reify` looks up information about the `Name`. It will fail with a compile error if the `Name` is not visible. A `Name` is visible if it is imported or defined in a prior top-level declaration group. See the documentation for `newDeclarationGroup` for more details.

It is sometimes useful to construct the argument name using `lookupTypeName` or `lookupValueName` to ensure that we are reifying from the right namespace. For instance, in this context:

    data D = D

which `D` does `reify (mkName "D")` return information about? (Answer: `D`-the-type, but don't rely on it.) To ensure we get information about `D`-the-value, use `lookupValueName`:

    do
      Just nm <- lookupValueName "D"
      reify nm

and to get information about `D`-the-type, use `lookupTypeName`.

reifyAnnotations :: Data a => AnnLookup -> Q [a] Source #

`reifyAnnotations target` returns the list of annotations associated with `target`. Only the annotations that are appropriately typed is returned. So if you have `Int` and `String` annotations for the same target, you have to call this function twice.

reifyConStrictness :: Name -> Q [DecidedStrictness] Source #

`reifyConStrictness nm` looks up the strictness information for the fields of the constructor with the name `nm`. Note that the strictness information that `reifyConStrictness` returns may not correspond to what is written in the source code. For example, in the following data declaration:

    data Pair a = Pair a a

`reifyConStrictness` would return `[`DecidedLazy`, DecidedLazy]` under most circumstances, but it would return `[`DecidedStrict`, DecidedStrict]` if the `-XStrictData` language extension was enabled.

reifyFixity :: Name -> Q (Maybe Fixity) Source #

`reifyFixity nm` attempts to find a fixity declaration for `nm`. For example, if the function `foo` has the fixity declaration `infixr 7 foo`, then `reifyFixity 'foo` would return ``Just` (`Fixity` 7 `InfixR`)`. If the function `bar` does not have a fixity declaration, then `reifyFixity 'bar` returns `Nothing`, so you may assume `bar` has `defaultFixity`.

reifyInstances :: Name -> [Type] -> Q [InstanceDec] Source #

`reifyInstances nm tys` returns a list of all visible instances (see below for "visible") of `nm tys`. That is, if `nm` is the name of a type class, then all instances of this class at the types `tys` are returned. Alternatively, if `nm` is the name of a data family or type family, all instances of this family at the types `tys` are returned.

Note that this is a "shallow" test; the declarations returned merely have instance heads which unify with `nm tys`, they need not actually be satisfiable.

- `reifyInstances ''Eq [ `TupleT` 2 ``AppT`` `ConT` ''A ``AppT`` `ConT` ''B ]` contains the `instance (Eq a, Eq b) => Eq (a, b)` regardless of whether `A` and `B` themselves implement `Eq`
- `reifyInstances ''Show [ `VarT` (`mkName` "a") ]` produces every available instance of `Show`

There is one edge case: `reifyInstances ''Typeable tys` currently always produces an empty list (no matter what `tys` are given).

In principle, the *visible* instances are * all instances defined in a prior top-level declaration group (see docs on `newDeclarationGroup`), or * all instances defined in any module transitively imported by the module being compiled

However, actually searching all modules transitively below the one being compiled is unreasonably expensive, so `reifyInstances` will report only the instance for modules that GHC has had some cause to visit during this compilation. This is a shortcoming: `reifyInstances` might fail to report instances for a type that is otherwise unusued, or instances defined in a different component. You can work around this shortcoming by explicitly importing the modules whose instances you want to be visible. GHC issue #20529 has some discussion around this.

reifyModule :: Module -> Q ModuleInfo Source #

`reifyModule mod` looks up information about module `mod`. To look up the current module, call this function with the return value of `thisModule`.

reifyRoles :: Name -> Q [Role] Source #

`reifyRoles nm` returns the list of roles associated with the parameters (both visible and invisible) of the tycon `nm`. Fails if `nm` cannot be found or is not a tycon. The returned list should never contain `InferR`.

An invisible parameter to a tycon is often a kind parameter. For example, if we have

    type Proxy :: forall k. k -> Type
    data Proxy a = MkProxy

and `reifyRoles Proxy`, we will get `[`NominalR`, `PhantomR`]`. The `NominalR` is the role of the invisible `k` parameter. Kind parameters are always nominal.

reifyType :: Name -> Q Type Source #

`reifyType nm` attempts to find the type or kind of `nm`. For example, `reifyType 'not` returns `Bool -> Bool`, and `reifyType ''Bool` returns `Type`. This works even if there's no explicit signature and the type or kind is inferred.

report :: Bool -> String -> Q () Source #

Deprecated: Use reportError or reportWarning instead

Report an error (True) or warning (False), but carry on; use `fail` to stop.

reportError :: String -> Q () Source #

Report an error to the user, but allow the current splice's computation to carry on. To abort the computation, use `fail`.

reportWarning :: String -> Q () Source #

Report a warning to the user, and carry on.

runIO :: IO a -> Q a Source #

The `runIO` function lets you run an I/O computation in the `Q` monad. Take care: you are guaranteed the ordering of calls to `runIO` within a single `Q` computation, but not about the order in which splices are run.

Note: for various murky reasons, stdout and stderr handles are not necessarily flushed when the compiler finishes running, so you should flush them yourself.

sequenceQ :: Monad m => forall a. [m a] -> m [a] Source #

This function is only used in `Quote` when desugaring brackets. This is not necessary for the user, who can use the ordinary `return` and `(>>=)` operations.

runQ :: Quasi m => Q a -> m a Source #

"Runs" the `Q` monad. Normal users of Template Haskell should not need this function, as the splice brackets `$( ... )` are the usual way of running a `Q` computation.

This function is primarily used in GHC internals, and for debugging splices by running them in `IO`.

Note that many functions in `Q`, such as `reify` and other compiler queries, are not supported when running `Q` in `IO`; these operations simply fail at runtime. Indeed, the only operations guaranteed to succeed are `newName`, `runIO`, `reportError` and `reportWarning`.

showName :: Name -> String Source #

showName' :: NameIs -> Name -> String Source #

thenCmp :: Ordering -> Ordering -> Ordering Source #

Internal helper function.

tupleDataName :: Int -> Name Source #

Tuple data constructor

tupleTypeName :: Int -> Name Source #

Tuple type constructor

unTypeQ :: forall a m. Quote m => m (TExp a) -> m Exp Source #

Discard the type annotation and produce a plain Template Haskell expression

Representation-polymorphic since template-haskell-2.16.0.0.

unboxedSumDataName :: SumAlt -> SumArity -> Name Source #

Unboxed sum data constructor

unboxedSumTypeName :: SumArity -> Name Source #

Unboxed sum type constructor

unboxedTupleDataName :: Int -> Name Source #

Unboxed tuple data constructor

unboxedTupleTypeName :: Int -> Name Source #

Unboxed tuple type constructor

unsafeTExpCoerce :: forall a m. Quote m => m Exp -> m (TExp a) Source #

Annotate the Template Haskell expression with a type

This is unsafe because GHC cannot check for you that the expression really does have the type you claim it has.

Representation-polymorphic since template-haskell-2.16.0.0.

data ForeignSrcLang Source #

Foreign formats supported by GHC via TH

Constructors

LangC | C
LangCxx | C++
LangObjc | Objective C
LangObjcxx | Objective C++
LangAsm | Assembly language (.s)
LangJs | JavaScript
RawObject | Object (.o)

#### Instances

Instances details

Eq ForeignSrcLang Source # |
Instance details Defined in GHC.Internal.ForeignSrcLang Methods (==) :: ForeignSrcLang -> ForeignSrcLang -> Bool Source # (/=) :: ForeignSrcLang -> ForeignSrcLang -> Bool Source #
Generic ForeignSrcLang Source # |
Instance details Defined in GHC.Internal.ForeignSrcLang Associated Types
type Rep ForeignSrcLang |
Instance details Defined in GHC.Internal.ForeignSrcLang type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.Internal.ForeignSrcLang" "ghc-internal" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LangJs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type))))
Methods from :: ForeignSrcLang -> Rep ForeignSrcLang x Source # to :: Rep ForeignSrcLang x -> ForeignSrcLang Source #
Show ForeignSrcLang Source # |
Instance details Defined in GHC.Internal.ForeignSrcLang Methods showsPrec :: Int -> ForeignSrcLang -> ShowS Source # show :: ForeignSrcLang -> String Source # showList :: [ForeignSrcLang] -> ShowS Source #
Lift ForeignSrcLang Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => ForeignSrcLang -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ForeignSrcLang -> Code m ForeignSrcLang Source #
type Rep ForeignSrcLang Source # |
Instance details Defined in GHC.Internal.ForeignSrcLang type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.Internal.ForeignSrcLang" "ghc-internal" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LangJs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type))))

data Extension Source #

The language extensions known to GHC.

Note that there is an orphan `Binary` instance for this type supplied by the GHC.LanguageExtensions module provided by `ghc-boot`. We can't provide here as this would require adding transitive dependencies to the `template-haskell` package, which must have a minimal dependency set.

Constructors

Cpp |
OverlappingInstances |
UndecidableInstances |
IncoherentInstances |
UndecidableSuperClasses |
MonomorphismRestriction |
MonoLocalBinds |
DeepSubsumption |
RelaxedPolyRec |
ExtendedDefaultRules |
NamedDefaults |
ForeignFunctionInterface |
UnliftedFFITypes |
InterruptibleFFI |
CApiFFI |
GHCForeignImportPrim |
JavaScriptFFI |
ParallelArrays |
Arrows |
TemplateHaskell |
TemplateHaskellQuotes |
QualifiedDo |
QuasiQuotes |
ImplicitParams |
ImplicitPrelude |
ScopedTypeVariables |
AllowAmbiguousTypes |
UnboxedTuples |
UnboxedSums |
UnliftedNewtypes |
UnliftedDatatypes |
BangPatterns |
TypeFamilies |
TypeFamilyDependencies |
TypeInType |
OverloadedStrings |
OverloadedLists |
NumDecimals |
DisambiguateRecordFields |
RecordWildCards |
NamedFieldPuns |
ViewPatterns |
OrPatterns |
GADTs |
GADTSyntax |
NPlusKPatterns |
DoAndIfThenElse |
BlockArguments |
RebindableSyntax |
ConstraintKinds |
PolyKinds |
DataKinds |
TypeData |
InstanceSigs |
ApplicativeDo |
LinearTypes |
RequiredTypeArguments |
StandaloneDeriving |
DeriveDataTypeable |
AutoDeriveTypeable |
DeriveFunctor |
DeriveTraversable |
DeriveFoldable |
DeriveGeneric |
DefaultSignatures |
DeriveAnyClass |
DeriveLift |
DerivingStrategies |
DerivingVia |
TypeSynonymInstances |
FlexibleContexts |
FlexibleInstances |
ConstrainedClassMethods |
MultiParamTypeClasses |
NullaryTypeClasses |
FunctionalDependencies |
UnicodeSyntax |
ExistentialQuantification |
MagicHash |
EmptyDataDecls |
KindSignatures |
RoleAnnotations |
ParallelListComp |
TransformListComp |
MonadComprehensions |
GeneralizedNewtypeDeriving |
RecursiveDo |
PostfixOperators |
TupleSections |
PatternGuards |
LiberalTypeSynonyms |
RankNTypes |
ImpredicativeTypes |
TypeOperators |
ExplicitNamespaces |
PackageImports |
ExplicitForAll |
AlternativeLayoutRule |
AlternativeLayoutRuleTransitional |
DatatypeContexts |
NondecreasingIndentation |
RelaxedLayout |
TraditionalRecordSyntax |
LambdaCase |
MultiWayIf |
BinaryLiterals |
NegativeLiterals |
HexFloatLiterals |
DuplicateRecordFields |
OverloadedLabels |
EmptyCase |
PatternSynonyms |
PartialTypeSignatures |
NamedWildCards |
StaticPointers |
TypeApplications |
Strict |
StrictData |
EmptyDataDeriving |
NumericUnderscores |
QuantifiedConstraints |
StarIsType |
ImportQualifiedPost |
CUSKs |
StandaloneKindSignatures |
LexicalNegation |
FieldSelectors |
OverloadedRecordDot |
OverloadedRecordUpdate |
TypeAbstractions |
ExtendedLiterals |
ListTuplePuns |
MultilineStrings |
ExplicitLevelImports |
ImplicitStagePersistence |

#### Instances

Instances details

Eq Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions Methods (==) :: Extension -> Extension -> Bool Source # (/=) :: Extension -> Extension -> Bool Source #
Ord Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions Methods compare :: Extension -> Extension -> Ordering Source # (<) :: Extension -> Extension -> Bool Source # (<=) :: Extension -> Extension -> Bool Source # (>) :: Extension -> Extension -> Bool Source # (>=) :: Extension -> Extension -> Bool Source # max :: Extension -> Extension -> Extension Source # min :: Extension -> Extension -> Extension Source #
Bounded Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions Methods minBound :: Extension Source # maxBound :: Extension Source #
Enum Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions Methods succ :: Extension -> Extension Source # pred :: Extension -> Extension Source # toEnum :: Int -> Extension Source # fromEnum :: Extension -> Int Source # enumFrom :: Extension -> [Extension] Source # enumFromThen :: Extension -> Extension -> [Extension] Source # enumFromTo :: Extension -> Extension -> [Extension] Source # enumFromThenTo :: Extension -> Extension -> Extension -> [Extension] Source #
Generic Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions Associated Types
type Rep Extension |
Instance details Defined in GHC.Internal.LanguageExtensions type Rep Extension = D1 ('MetaData "Extension" "GHC.Internal.LanguageExtensions" "ghc-internal" 'False) (((((((C1 ('MetaCons "Cpp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverlappingInstances" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UndecidableInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IncoherentInstances" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UndecidableSuperClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MonomorphismRestriction" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MonoLocalBinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeepSubsumption" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "RelaxedPolyRec" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExtendedDefaultRules" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NamedDefaults" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ForeignFunctionInterface" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UnliftedFFITypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InterruptibleFFI" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CApiFFI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GHCForeignImportPrim" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "JavaScriptFFI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ParallelArrays" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Arrows" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TemplateHaskell" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TemplateHaskellQuotes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QualifiedDo" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "QuasiQuotes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitParams" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ImplicitPrelude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ScopedTypeVariables" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AllowAmbiguousTypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnboxedTuples" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UnboxedSums" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnliftedNewtypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UnliftedDatatypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "BangPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeFamilies" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "TypeFamilyDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeInType" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedStrings" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedLists" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NumDecimals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DisambiguateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RecordWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NamedFieldPuns" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ViewPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OrPatterns" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GADTs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GADTSyntax" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NPlusKPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DoAndIfThenElse" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BlockArguments" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "RebindableSyntax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstraintKinds" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "PolyKinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataKinds" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InstanceSigs" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ApplicativeDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinearTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RequiredTypeArguments" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StandaloneDeriving" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "DeriveDataTypeable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AutoDeriveTypeable" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DeriveFunctor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveTraversable" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DeriveFoldable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveGeneric" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DefaultSignatures" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DeriveAnyClass" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveLift" 'PrefixI 'False) (U1 :: Type -> Type)))))))) :+: ((((((C1 ('MetaCons "DerivingStrategies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivingVia" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeSynonymInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlexibleContexts" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "FlexibleInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrainedClassMethods" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MultiParamTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NullaryTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FunctionalDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnicodeSyntax" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExistentialQuantification" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MagicHash" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "EmptyDataDecls" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KindSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RoleAnnotations" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ParallelListComp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TransformListComp" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "MonadComprehensions" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GeneralizedNewtypeDeriving" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RecursiveDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PostfixOperators" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TupleSections" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PatternGuards" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LiberalTypeSynonyms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RankNTypes" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ImpredicativeTypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeOperators" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExplicitNamespaces" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PackageImports" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ExplicitForAll" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AlternativeLayoutRule" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AlternativeLayoutRuleTransitional" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DatatypeContexts" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NondecreasingIndentation" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "RelaxedLayout" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TraditionalRecordSyntax" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LambdaCase" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MultiWayIf" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BinaryLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NegativeLiterals" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "HexFloatLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DuplicateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "OverloadedLabels" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyCase" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PatternSynonyms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PartialTypeSignatures" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NamedWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StaticPointers" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeApplications" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Strict" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StrictData" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "EmptyDataDeriving" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NumericUnderscores" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "QuantifiedConstraints" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StarIsType" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ImportQualifiedPost" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CUSKs" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StandaloneKindSignatures" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LexicalNegation" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FieldSelectors" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedRecordDot" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedRecordUpdate" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeAbstractions" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ExtendedLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ListTuplePuns" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MultilineStrings" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ExplicitLevelImports" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitStagePersistence" 'PrefixI 'False) (U1 :: Type -> Type)))))))))
Methods from :: Extension -> Rep Extension x Source # to :: Rep Extension x -> Extension Source #
Show Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions Methods showsPrec :: Int -> Extension -> ShowS Source # show :: Extension -> String Source # showList :: [Extension] -> ShowS Source #
Lift Extension Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Extension -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Extension -> Code m Extension Source #
type Rep Extension Source # |
Instance details Defined in GHC.Internal.LanguageExtensions type Rep Extension = D1 ('MetaData "Extension" "GHC.Internal.LanguageExtensions" "ghc-internal" 'False) (((((((C1 ('MetaCons "Cpp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverlappingInstances" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UndecidableInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IncoherentInstances" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UndecidableSuperClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MonomorphismRestriction" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MonoLocalBinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeepSubsumption" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "RelaxedPolyRec" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExtendedDefaultRules" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NamedDefaults" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ForeignFunctionInterface" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UnliftedFFITypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InterruptibleFFI" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CApiFFI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GHCForeignImportPrim" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "JavaScriptFFI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ParallelArrays" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Arrows" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TemplateHaskell" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TemplateHaskellQuotes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QualifiedDo" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "QuasiQuotes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitParams" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ImplicitPrelude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ScopedTypeVariables" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AllowAmbiguousTypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnboxedTuples" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UnboxedSums" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnliftedNewtypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UnliftedDatatypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "BangPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeFamilies" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "TypeFamilyDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeInType" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedStrings" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedLists" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NumDecimals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DisambiguateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RecordWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NamedFieldPuns" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ViewPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OrPatterns" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "GADTs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GADTSyntax" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NPlusKPatterns" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DoAndIfThenElse" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BlockArguments" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "RebindableSyntax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstraintKinds" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "PolyKinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataKinds" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InstanceSigs" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ApplicativeDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LinearTypes" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RequiredTypeArguments" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StandaloneDeriving" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "DeriveDataTypeable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AutoDeriveTypeable" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DeriveFunctor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveTraversable" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DeriveFoldable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveGeneric" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DefaultSignatures" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DeriveAnyClass" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeriveLift" 'PrefixI 'False) (U1 :: Type -> Type)))))))) :+: ((((((C1 ('MetaCons "DerivingStrategies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivingVia" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeSynonymInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlexibleContexts" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "FlexibleInstances" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrainedClassMethods" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MultiParamTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NullaryTypeClasses" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FunctionalDependencies" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnicodeSyntax" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExistentialQuantification" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MagicHash" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "EmptyDataDecls" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KindSignatures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RoleAnnotations" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ParallelListComp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TransformListComp" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "MonadComprehensions" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GeneralizedNewtypeDeriving" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RecursiveDo" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PostfixOperators" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TupleSections" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PatternGuards" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LiberalTypeSynonyms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RankNTypes" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ImpredicativeTypes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeOperators" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ExplicitNamespaces" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PackageImports" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ExplicitForAll" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AlternativeLayoutRule" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AlternativeLayoutRuleTransitional" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DatatypeContexts" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NondecreasingIndentation" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "RelaxedLayout" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TraditionalRecordSyntax" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LambdaCase" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MultiWayIf" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BinaryLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NegativeLiterals" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "HexFloatLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DuplicateRecordFields" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "OverloadedLabels" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyCase" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PatternSynonyms" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PartialTypeSignatures" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NamedWildCards" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StaticPointers" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeApplications" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Strict" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StrictData" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "EmptyDataDeriving" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NumericUnderscores" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "QuantifiedConstraints" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StarIsType" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ImportQualifiedPost" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CUSKs" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "StandaloneKindSignatures" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LexicalNegation" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FieldSelectors" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OverloadedRecordDot" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OverloadedRecordUpdate" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeAbstractions" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ExtendedLiterals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ListTuplePuns" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MultilineStrings" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ExplicitLevelImports" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ImplicitStagePersistence" 'PrefixI 'False) (U1 :: Type -> Type)))))))))

data AnnLookup Source #

Annotation target for reifyAnnotations

Constructors

AnnLookupModule Module |
AnnLookupName Name |

#### Instances

Instances details

Eq AnnLookup Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: AnnLookup -> AnnLookup -> Bool Source # (/=) :: AnnLookup -> AnnLookup -> Bool Source #
Ord AnnLookup Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: AnnLookup -> AnnLookup -> Ordering Source # (<) :: AnnLookup -> AnnLookup -> Bool Source # (<=) :: AnnLookup -> AnnLookup -> Bool Source # (>) :: AnnLookup -> AnnLookup -> Bool Source # (>=) :: AnnLookup -> AnnLookup -> Bool Source # max :: AnnLookup -> AnnLookup -> AnnLookup Source # min :: AnnLookup -> AnnLookup -> AnnLookup Source #
Data AnnLookup Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AnnLookup -> c AnnLookup Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnnLookup Source # toConstr :: AnnLookup -> Constr Source # dataTypeOf :: AnnLookup -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnnLookup) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnLookup) Source # gmapT :: (forall b. Data b => b -> b) -> AnnLookup -> AnnLookup Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnnLookup -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnnLookup -> r Source # gmapQ :: (forall d. Data d => d -> u) -> AnnLookup -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> AnnLookup -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnnLookup -> m AnnLookup Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnLookup -> m AnnLookup Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnLookup -> m AnnLookup Source #
Generic AnnLookup Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep AnnLookup |
Instance details Defined in GHC.Internal.TH.Syntax type Rep AnnLookup = D1 ('MetaData "AnnLookup" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "AnnLookupModule" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)) :+: C1 ('MetaCons "AnnLookupName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))
Methods from :: AnnLookup -> Rep AnnLookup x Source # to :: Rep AnnLookup x -> AnnLookup Source #
Show AnnLookup Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> AnnLookup -> ShowS Source # show :: AnnLookup -> String Source # showList :: [AnnLookup] -> ShowS Source #
Lift AnnLookup Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => AnnLookup -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => AnnLookup -> Code m AnnLookup Source #
type Rep AnnLookup Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep AnnLookup = D1 ('MetaData "AnnLookup" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "AnnLookupModule" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)) :+: C1 ('MetaCons "AnnLookupName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))

data AnnTarget Source #

The target of an `ANN` pragma

Constructors

ModuleAnnotation |
    {-# ANN {module} ... #-}
TypeAnnotation Name |
    {-# ANN type {name} ... #-}
ValueAnnotation Name |
    {-# ANN {name} ... #-}

#### Instances

Instances details

Eq AnnTarget Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: AnnTarget -> AnnTarget -> Bool Source # (/=) :: AnnTarget -> AnnTarget -> Bool Source #
Ord AnnTarget Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: AnnTarget -> AnnTarget -> Ordering Source # (<) :: AnnTarget -> AnnTarget -> Bool Source # (<=) :: AnnTarget -> AnnTarget -> Bool Source # (>) :: AnnTarget -> AnnTarget -> Bool Source # (>=) :: AnnTarget -> AnnTarget -> Bool Source # max :: AnnTarget -> AnnTarget -> AnnTarget Source # min :: AnnTarget -> AnnTarget -> AnnTarget Source #
Data AnnTarget Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AnnTarget -> c AnnTarget Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnnTarget Source # toConstr :: AnnTarget -> Constr Source # dataTypeOf :: AnnTarget -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnnTarget) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnTarget) Source # gmapT :: (forall b. Data b => b -> b) -> AnnTarget -> AnnTarget Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnnTarget -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnnTarget -> r Source # gmapQ :: (forall d. Data d => d -> u) -> AnnTarget -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> AnnTarget -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnnTarget -> m AnnTarget Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnTarget -> m AnnTarget Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnTarget -> m AnnTarget Source #
Generic AnnTarget Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep AnnTarget |
Instance details Defined in GHC.Internal.TH.Syntax type Rep AnnTarget = D1 ('MetaData "AnnTarget" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ModuleAnnotation" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TypeAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "ValueAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))
Methods from :: AnnTarget -> Rep AnnTarget x Source # to :: Rep AnnTarget x -> AnnTarget Source #
Show AnnTarget Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> AnnTarget -> ShowS Source # show :: AnnTarget -> String Source # showList :: [AnnTarget] -> ShowS Source #
Lift AnnTarget Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => AnnTarget -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => AnnTarget -> Code m AnnTarget Source #
type Rep AnnTarget Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep AnnTarget = D1 ('MetaData "AnnTarget" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ModuleAnnotation" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TypeAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "ValueAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))

type Arity = Int Source #

In `PrimTyConI`, arity of the type constructor

data Bang Source #

Strictness information in a data constructor's argument.

Constructors

Bang SourceUnpackedness SourceStrictness |
    C { {-# UNPACK #-} !}a

#### Instances

Instances details

Ppr Bang Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Bang -> Doc Source # ppr_list :: [Bang] -> Doc Source #
Eq Bang Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Bang -> Bang -> Bool Source # (/=) :: Bang -> Bang -> Bool Source #
Ord Bang Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Bang -> Bang -> Ordering Source # (<) :: Bang -> Bang -> Bool Source # (<=) :: Bang -> Bang -> Bool Source # (>) :: Bang -> Bang -> Bool Source # (>=) :: Bang -> Bang -> Bool Source # max :: Bang -> Bang -> Bang Source # min :: Bang -> Bang -> Bang Source #
Data Bang Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bang -> c Bang Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bang Source # toConstr :: Bang -> Constr Source # dataTypeOf :: Bang -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Bang) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bang) Source # gmapT :: (forall b. Data b => b -> b) -> Bang -> Bang Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bang -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bang -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Bang -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Bang -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bang -> m Bang Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bang -> m Bang Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bang -> m Bang Source #
Generic Bang Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Bang |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Bang = D1 ('MetaData "Bang" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Bang" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceUnpackedness) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceStrictness)))
Methods from :: Bang -> Rep Bang x Source # to :: Rep Bang x -> Bang Source #
Show Bang Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Bang -> ShowS Source # show :: Bang -> String Source # showList :: [Bang] -> ShowS Source #
Lift Bang Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Bang -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Bang -> Code m Bang Source #
type Rep Bang Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Bang = D1 ('MetaData "Bang" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Bang" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceUnpackedness) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SourceStrictness)))

data BndrVis Source #

Visibility of a type variable. See Inferred vs. specified type variables.

Constructors

BndrReq |
    a
BndrInvis |
    @a

#### Instances

Instances details

PprFlag BndrVis Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods pprTyVarBndr :: TyVarBndr BndrVis -> Doc Source #
Eq BndrVis Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: BndrVis -> BndrVis -> Bool Source # (/=) :: BndrVis -> BndrVis -> Bool Source #
Ord BndrVis Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: BndrVis -> BndrVis -> Ordering Source # (<) :: BndrVis -> BndrVis -> Bool Source # (<=) :: BndrVis -> BndrVis -> Bool Source # (>) :: BndrVis -> BndrVis -> Bool Source # (>=) :: BndrVis -> BndrVis -> Bool Source # max :: BndrVis -> BndrVis -> BndrVis Source # min :: BndrVis -> BndrVis -> BndrVis Source #
Data BndrVis Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BndrVis -> c BndrVis Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BndrVis Source # toConstr :: BndrVis -> Constr Source # dataTypeOf :: BndrVis -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BndrVis) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BndrVis) Source # gmapT :: (forall b. Data b => b -> b) -> BndrVis -> BndrVis Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BndrVis -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BndrVis -> r Source # gmapQ :: (forall d. Data d => d -> u) -> BndrVis -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> BndrVis -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BndrVis -> m BndrVis Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BndrVis -> m BndrVis Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BndrVis -> m BndrVis Source #
Generic BndrVis Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep BndrVis |
Instance details Defined in GHC.Internal.TH.Syntax type Rep BndrVis = D1 ('MetaData "BndrVis" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "BndrReq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BndrInvis" 'PrefixI 'False) (U1 :: Type -> Type))
Methods from :: BndrVis -> Rep BndrVis x Source # to :: Rep BndrVis x -> BndrVis Source #
Show BndrVis Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> BndrVis -> ShowS Source # show :: BndrVis -> String Source # showList :: [BndrVis] -> ShowS Source #
DefaultBndrFlag BndrVis Source # |
Instance details Defined in Language.Haskell.TH.Lib Methods defaultBndrFlag :: BndrVis Source #
Lift BndrVis Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => BndrVis -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => BndrVis -> Code m BndrVis Source #
type Rep BndrVis Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep BndrVis = D1 ('MetaData "BndrVis" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "BndrReq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BndrInvis" 'PrefixI 'False) (U1 :: Type -> Type))

data Body Source #

A potentially guarded expression, as in function definitions or case alternatives.

Constructors

GuardedB [(Guard, Exp)] |
    f p { | e1 = e2
          | e3 = e4 }
     where ds
NormalB Exp |
    f p { = e } where ds

#### Instances

Instances details

Eq Body Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Body -> Body -> Bool Source # (/=) :: Body -> Body -> Bool Source #
Ord Body Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Body -> Body -> Ordering Source # (<) :: Body -> Body -> Bool Source # (<=) :: Body -> Body -> Bool Source # (>) :: Body -> Body -> Bool Source # (>=) :: Body -> Body -> Bool Source # max :: Body -> Body -> Body Source # min :: Body -> Body -> Body Source #
Data Body Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Body -> c Body Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Body Source # toConstr :: Body -> Constr Source # dataTypeOf :: Body -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Body) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Body) Source # gmapT :: (forall b. Data b => b -> b) -> Body -> Body Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Body -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Body -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Body -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Body -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Body -> m Body Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Body -> m Body Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Body -> m Body Source #
Generic Body Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Body |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Body = D1 ('MetaData "Body" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "GuardedB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)])) :+: C1 ('MetaCons "NormalB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))
Methods from :: Body -> Rep Body x Source # to :: Rep Body x -> Body Source #
Show Body Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Body -> ShowS Source # show :: Body -> String Source # showList :: [Body] -> ShowS Source #
Lift Body Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Body -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Body -> Code m Body Source #
type Rep Body Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Body = D1 ('MetaData "Body" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "GuardedB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Guard, Exp)])) :+: C1 ('MetaCons "NormalB" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))

data Bytes Source #

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

Bytes |
Fields bytesPtr :: ForeignPtr Word8 Pointer to the data bytesOffset :: Word Offset from the pointer bytesSize :: Word Number of bytes

#### Instances

Instances details

Eq Bytes Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Bytes -> Bytes -> Bool Source # (/=) :: Bytes -> Bytes -> Bool Source #
Ord Bytes Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Bytes -> Bytes -> Ordering Source # (<) :: Bytes -> Bytes -> Bool Source # (<=) :: Bytes -> Bytes -> Bool Source # (>) :: Bytes -> Bytes -> Bool Source # (>=) :: Bytes -> Bytes -> Bool Source # max :: Bytes -> Bytes -> Bytes Source # min :: Bytes -> Bytes -> Bytes Source #
Data Bytes Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bytes -> c Bytes Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bytes Source # toConstr :: Bytes -> Constr Source # dataTypeOf :: Bytes -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Bytes) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bytes) Source # gmapT :: (forall b. Data b => b -> b) -> Bytes -> Bytes Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bytes -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bytes -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Bytes -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Bytes -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bytes -> m Bytes Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bytes -> m Bytes Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bytes -> m Bytes Source #
Generic Bytes Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Bytes |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Bytes = D1 ('MetaData "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))))
Methods from :: Bytes -> Rep Bytes x Source # to :: Rep Bytes x -> Bytes Source #
Show Bytes Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Bytes -> ShowS Source # show :: Bytes -> String Source # showList :: [Bytes] -> ShowS Source #
Lift Bytes Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Bytes -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Bytes -> Code m Bytes Source #
type Rep Bytes Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Bytes = D1 ('MetaData "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))))

data Callconv Source #

A calling convention identifier, as in a `Foreign` declaration.

Constructors

CCall |
StdCall |
CApi |
Prim |
JavaScript |

#### Instances

Instances details

Eq Callconv Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Callconv -> Callconv -> Bool Source # (/=) :: Callconv -> Callconv -> Bool Source #
Ord Callconv Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Callconv -> Callconv -> Ordering Source # (<) :: Callconv -> Callconv -> Bool Source # (<=) :: Callconv -> Callconv -> Bool Source # (>) :: Callconv -> Callconv -> Bool Source # (>=) :: Callconv -> Callconv -> Bool Source # max :: Callconv -> Callconv -> Callconv Source # min :: Callconv -> Callconv -> Callconv Source #
Data Callconv Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Callconv -> c Callconv Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Callconv Source # toConstr :: Callconv -> Constr Source # dataTypeOf :: Callconv -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Callconv) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Callconv) Source # gmapT :: (forall b. Data b => b -> b) -> Callconv -> Callconv Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Callconv -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Callconv -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Callconv -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Callconv -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Callconv -> m Callconv Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Callconv -> m Callconv Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Callconv -> m Callconv Source #
Generic Callconv Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Callconv |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Callconv = D1 ('MetaData "Callconv" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "CCall" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StdCall" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CApi" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Prim" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JavaScript" 'PrefixI 'False) (U1 :: Type -> Type))))
Methods from :: Callconv -> Rep Callconv x Source # to :: Rep Callconv x -> Callconv Source #
Show Callconv Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Callconv -> ShowS Source # show :: Callconv -> String Source # showList :: [Callconv] -> ShowS Source #
Lift Callconv Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Callconv -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Callconv -> Code m Callconv Source #
type Rep Callconv Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Callconv = D1 ('MetaData "Callconv" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "CCall" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "StdCall" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CApi" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Prim" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "JavaScript" 'PrefixI 'False) (U1 :: Type -> Type))))

type CharPos Source #

Arguments

= (Int, Int) | Line and character position

type Cxt Source #

Arguments

= [Pred] |
    (Eq a, Ord b)

A context, as found on the left side of a `=>` in a type.

data DecidedStrictness Source #

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

DecidedLazy | Field inferred to not have a bang.
DecidedStrict | Field inferred to have a bang.
DecidedUnpack | Field inferred to be unpacked.

#### Instances

Instances details

Ppr DecidedStrictness Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: DecidedStrictness -> Doc Source # ppr_list :: [DecidedStrictness] -> Doc Source #
Eq DecidedStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: DecidedStrictness -> DecidedStrictness -> Bool Source # (/=) :: DecidedStrictness -> DecidedStrictness -> Bool Source #
Ord DecidedStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: DecidedStrictness -> DecidedStrictness -> Ordering Source # (<) :: DecidedStrictness -> DecidedStrictness -> Bool Source # (<=) :: DecidedStrictness -> DecidedStrictness -> Bool Source # (>) :: DecidedStrictness -> DecidedStrictness -> Bool Source # (>=) :: DecidedStrictness -> DecidedStrictness -> Bool Source # max :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness Source # min :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness Source #
Data DecidedStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DecidedStrictness -> c DecidedStrictness Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DecidedStrictness Source # toConstr :: DecidedStrictness -> Constr Source # dataTypeOf :: DecidedStrictness -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DecidedStrictness) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DecidedStrictness) Source # gmapT :: (forall b. Data b => b -> b) -> DecidedStrictness -> DecidedStrictness Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DecidedStrictness -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DecidedStrictness -> r Source # gmapQ :: (forall d. Data d => d -> u) -> DecidedStrictness -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> DecidedStrictness -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DecidedStrictness -> m DecidedStrictness Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DecidedStrictness -> m DecidedStrictness Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DecidedStrictness -> m DecidedStrictness Source #
Generic DecidedStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep DecidedStrictness |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DecidedStrictness = D1 ('MetaData "DecidedStrictness" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "DecidedLazy" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DecidedStrict" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DecidedUnpack" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: DecidedStrictness -> Rep DecidedStrictness x Source # to :: Rep DecidedStrictness x -> DecidedStrictness Source #
Show DecidedStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> DecidedStrictness -> ShowS Source # show :: DecidedStrictness -> String Source # showList :: [DecidedStrictness] -> ShowS Source #
Lift DecidedStrictness Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DecidedStrictness -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DecidedStrictness -> Code m DecidedStrictness Source #
type Rep DecidedStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DecidedStrictness = D1 ('MetaData "DecidedStrictness" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "DecidedLazy" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DecidedStrict" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DecidedUnpack" 'PrefixI 'False) (U1 :: Type -> Type)))

data DocLoc Source #

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.

Constructors

ModuleDoc | At the current module's header.
DeclDoc Name | At a declaration, not necessarily top level.
ArgDoc Name Int | At a specific argument of a function, indexed by its position.
InstDoc Type | At a class or family instance.

#### Instances

Instances details

Eq DocLoc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: DocLoc -> DocLoc -> Bool Source # (/=) :: DocLoc -> DocLoc -> Bool Source #
Ord DocLoc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: DocLoc -> DocLoc -> Ordering Source # (<) :: DocLoc -> DocLoc -> Bool Source # (<=) :: DocLoc -> DocLoc -> Bool Source # (>) :: DocLoc -> DocLoc -> Bool Source # (>=) :: DocLoc -> DocLoc -> Bool Source # max :: DocLoc -> DocLoc -> DocLoc Source # min :: DocLoc -> DocLoc -> DocLoc Source #
Data DocLoc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DocLoc -> c DocLoc Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DocLoc Source # toConstr :: DocLoc -> Constr Source # dataTypeOf :: DocLoc -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DocLoc) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DocLoc) Source # gmapT :: (forall b. Data b => b -> b) -> DocLoc -> DocLoc Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DocLoc -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DocLoc -> r Source # gmapQ :: (forall d. Data d => d -> u) -> DocLoc -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> DocLoc -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DocLoc -> m DocLoc Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DocLoc -> m DocLoc Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DocLoc -> m DocLoc Source #
Generic DocLoc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep DocLoc |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DocLoc = D1 ('MetaData "DocLoc" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "ModuleDoc" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeclDoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "ArgDoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "InstDoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
Methods from :: DocLoc -> Rep DocLoc x Source # to :: Rep DocLoc x -> DocLoc Source #
Show DocLoc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> DocLoc -> ShowS Source # show :: DocLoc -> String Source # showList :: [DocLoc] -> ShowS Source #
Lift DocLoc Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DocLoc -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DocLoc -> Code m DocLoc Source #
type Rep DocLoc Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep DocLoc = D1 ('MetaData "DocLoc" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "ModuleDoc" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DeclDoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "ArgDoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "InstDoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))

data FamilyResultSig Source #

Type family result signature

Constructors

NoSig | no signature
KindSig Kind |
    k
TyVarSig (TyVarBndr ()) |
    = r, = (r :: k)

#### Instances

Instances details

Ppr FamilyResultSig Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: FamilyResultSig -> Doc Source # ppr_list :: [FamilyResultSig] -> Doc Source #
Eq FamilyResultSig Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: FamilyResultSig -> FamilyResultSig -> Bool Source # (/=) :: FamilyResultSig -> FamilyResultSig -> Bool Source #
Ord FamilyResultSig Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: FamilyResultSig -> FamilyResultSig -> Ordering Source # (<) :: FamilyResultSig -> FamilyResultSig -> Bool Source # (<=) :: FamilyResultSig -> FamilyResultSig -> Bool Source # (>) :: FamilyResultSig -> FamilyResultSig -> Bool Source # (>=) :: FamilyResultSig -> FamilyResultSig -> Bool Source # max :: FamilyResultSig -> FamilyResultSig -> FamilyResultSig Source # min :: FamilyResultSig -> FamilyResultSig -> FamilyResultSig Source #
Data FamilyResultSig Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FamilyResultSig -> c FamilyResultSig Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FamilyResultSig Source # toConstr :: FamilyResultSig -> Constr Source # dataTypeOf :: FamilyResultSig -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FamilyResultSig) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FamilyResultSig) Source # gmapT :: (forall b. Data b => b -> b) -> FamilyResultSig -> FamilyResultSig Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FamilyResultSig -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FamilyResultSig -> r Source # gmapQ :: (forall d. Data d => d -> u) -> FamilyResultSig -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> FamilyResultSig -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FamilyResultSig -> m FamilyResultSig Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FamilyResultSig -> m FamilyResultSig Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FamilyResultSig -> m FamilyResultSig Source #
Generic FamilyResultSig Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep FamilyResultSig |
Instance details Defined in GHC.Internal.TH.Syntax type Rep FamilyResultSig = D1 ('MetaData "FamilyResultSig" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KindSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "TyVarSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TyVarBndr ())))))
Methods from :: FamilyResultSig -> Rep FamilyResultSig x Source # to :: Rep FamilyResultSig x -> FamilyResultSig Source #
Show FamilyResultSig Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> FamilyResultSig -> ShowS Source # show :: FamilyResultSig -> String Source # showList :: [FamilyResultSig] -> ShowS Source #
Lift FamilyResultSig Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => FamilyResultSig -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => FamilyResultSig -> Code m FamilyResultSig Source #
type Rep FamilyResultSig Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep FamilyResultSig = D1 ('MetaData "FamilyResultSig" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoSig" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KindSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :+: C1 ('MetaCons "TyVarSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TyVarBndr ())))))

data Fixity Source #

Fixity, as specified in a `infix[lr] n` declaration.

Constructors

Fixity Int FixityDirection |

#### Instances

Instances details

Eq Fixity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Fixity -> Fixity -> Bool Source # (/=) :: Fixity -> Fixity -> Bool Source #
Ord Fixity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Fixity -> Fixity -> Ordering Source # (<) :: Fixity -> Fixity -> Bool Source # (<=) :: Fixity -> Fixity -> Bool Source # (>) :: Fixity -> Fixity -> Bool Source # (>=) :: Fixity -> Fixity -> Bool Source # max :: Fixity -> Fixity -> Fixity Source # min :: Fixity -> Fixity -> Fixity Source #
Data Fixity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Fixity -> c Fixity Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Fixity Source # toConstr :: Fixity -> Constr Source # dataTypeOf :: Fixity -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Fixity) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Fixity) Source # gmapT :: (forall b. Data b => b -> b) -> Fixity -> Fixity Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Fixity -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Fixity -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Source #
Generic Fixity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Fixity |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Fixity = D1 ('MetaData "Fixity" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Fixity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FixityDirection)))
Methods from :: Fixity -> Rep Fixity x Source # to :: Rep Fixity x -> Fixity Source #
Show Fixity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Fixity -> ShowS Source # show :: Fixity -> String Source # showList :: [Fixity] -> ShowS Source #
Lift Fixity Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Fixity -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Fixity -> Code m Fixity Source #
type Rep Fixity Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Fixity = D1 ('MetaData "Fixity" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Fixity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FixityDirection)))

data FixityDirection Source #

The associativity of an operator, as in an `infix` declaration.

Constructors

InfixL |
InfixR |
InfixN |

#### Instances

Instances details

Eq FixityDirection Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: FixityDirection -> FixityDirection -> Bool Source # (/=) :: FixityDirection -> FixityDirection -> Bool Source #
Ord FixityDirection Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: FixityDirection -> FixityDirection -> Ordering Source # (<) :: FixityDirection -> FixityDirection -> Bool Source # (<=) :: FixityDirection -> FixityDirection -> Bool Source # (>) :: FixityDirection -> FixityDirection -> Bool Source # (>=) :: FixityDirection -> FixityDirection -> Bool Source # max :: FixityDirection -> FixityDirection -> FixityDirection Source # min :: FixityDirection -> FixityDirection -> FixityDirection Source #
Data FixityDirection Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FixityDirection -> c FixityDirection Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FixityDirection Source # toConstr :: FixityDirection -> Constr Source # dataTypeOf :: FixityDirection -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FixityDirection) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FixityDirection) Source # gmapT :: (forall b. Data b => b -> b) -> FixityDirection -> FixityDirection Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FixityDirection -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FixityDirection -> r Source # gmapQ :: (forall d. Data d => d -> u) -> FixityDirection -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> FixityDirection -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FixityDirection -> m FixityDirection Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FixityDirection -> m FixityDirection Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FixityDirection -> m FixityDirection Source #
Generic FixityDirection Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep FixityDirection |
Instance details Defined in GHC.Internal.TH.Syntax type Rep FixityDirection = D1 ('MetaData "FixityDirection" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "InfixL" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InfixR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InfixN" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: FixityDirection -> Rep FixityDirection x Source # to :: Rep FixityDirection x -> FixityDirection Source #
Show FixityDirection Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> FixityDirection -> ShowS Source # show :: FixityDirection -> String Source # showList :: [FixityDirection] -> ShowS Source #
Lift FixityDirection Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => FixityDirection -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => FixityDirection -> Code m FixityDirection Source #
type Rep FixityDirection Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep FixityDirection = D1 ('MetaData "FixityDirection" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "InfixL" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InfixR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InfixN" 'PrefixI 'False) (U1 :: Type -> Type)))

data Foreign Source #

A `foreign` declaration.

Constructors

ImportF Callconv Safety String Name Type |
    foreign import callconv safety "foreign_name" haskellName :: type
ExportF Callconv String Name Type |
    foreign export callconv "foreign_name" haskellName :: type

#### Instances

Instances details

Ppr Foreign Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Foreign -> Doc Source # ppr_list :: [Foreign] -> Doc Source #
Eq Foreign Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Foreign -> Foreign -> Bool Source # (/=) :: Foreign -> Foreign -> Bool Source #
Ord Foreign Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Foreign -> Foreign -> Ordering Source # (<) :: Foreign -> Foreign -> Bool Source # (<=) :: Foreign -> Foreign -> Bool Source # (>) :: Foreign -> Foreign -> Bool Source # (>=) :: Foreign -> Foreign -> Bool Source # max :: Foreign -> Foreign -> Foreign Source # min :: Foreign -> Foreign -> Foreign Source #
Data Foreign Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Foreign -> c Foreign Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Foreign Source # toConstr :: Foreign -> Constr Source # dataTypeOf :: Foreign -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Foreign) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Foreign) Source # gmapT :: (forall b. Data b => b -> b) -> Foreign -> Foreign Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Foreign -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Foreign -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Foreign -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Foreign -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Foreign -> m Foreign Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Foreign -> m Foreign Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Foreign -> m Foreign Source #
Generic Foreign Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Foreign |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Foreign = D1 ('MetaData "Foreign" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ImportF" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Callconv) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Safety)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: C1 ('MetaCons "ExportF" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Callconv) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))
Methods from :: Foreign -> Rep Foreign x Source # to :: Rep Foreign x -> Foreign Source #
Show Foreign Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Foreign -> ShowS Source # show :: Foreign -> String Source # showList :: [Foreign] -> ShowS Source #
Lift Foreign Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Foreign -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Foreign -> Code m Foreign Source #
type Rep Foreign Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Foreign = D1 ('MetaData "Foreign" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ImportF" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Callconv) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Safety)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: C1 ('MetaCons "ExportF" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Callconv) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))

data Guard Source #

A single guard.

Constructors

NormalG Exp |
    f x { | odd x } = x
PatG [Stmt] |
    f x { | Just y <- x, Just z <- y } = z

#### Instances

Instances details

Eq Guard Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Guard -> Guard -> Bool Source # (/=) :: Guard -> Guard -> Bool Source #
Ord Guard Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Guard -> Guard -> Ordering Source # (<) :: Guard -> Guard -> Bool Source # (<=) :: Guard -> Guard -> Bool Source # (>) :: Guard -> Guard -> Bool Source # (>=) :: Guard -> Guard -> Bool Source # max :: Guard -> Guard -> Guard Source # min :: Guard -> Guard -> Guard Source #
Data Guard Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Guard -> c Guard Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Guard Source # toConstr :: Guard -> Constr Source # dataTypeOf :: Guard -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Guard) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Guard) Source # gmapT :: (forall b. Data b => b -> b) -> Guard -> Guard Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Guard -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Guard -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Guard -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Guard -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Guard -> m Guard Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Guard -> m Guard Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Guard -> m Guard Source #
Generic Guard Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Guard |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Guard = D1 ('MetaData "Guard" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NormalG" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "PatG" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])))
Methods from :: Guard -> Rep Guard x Source # to :: Rep Guard x -> Guard Source #
Show Guard Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Guard -> ShowS Source # show :: Guard -> String Source # showList :: [Guard] -> ShowS Source #
Lift Guard Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Guard -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Guard -> Code m Guard Source #
type Rep Guard Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Guard = D1 ('MetaData "Guard" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NormalG" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "PatG" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Stmt])))

data Info Source #

Obtained from `reify` in the `Q` Monad.

Constructors

ClassI Dec [InstanceDec] | A class, with a list of its visible instances
ClassOpI Name Type ParentName | A class method
TyConI Dec | A "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 Unlifted | A "primitive" type constructor, which can't be expressed with a `Dec`. Examples: `(->)`, `Int#`.
DataConI Name Type ParentName | A data constructor
PatSynI Name PatSynType | A pattern synonym
VarI Name Type (Maybe Dec) | A "value" variable (as opposed to a type variable, see `TyVarI`). The `Maybe Dec` field contains `Just` the declaration which defined the variable - including the RHS of the declaration - or else `Nothing`, 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 Type | A type variable. The `Type` field contains the type which underlies the variable. At present, this is always ``VarT` theName`, but future changes may permit refinement of this.

#### Instances

Instances details

Ppr Info Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Info -> Doc Source # ppr_list :: [Info] -> Doc Source #
Eq Info Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Info -> Info -> Bool Source # (/=) :: Info -> Info -> Bool Source #
Ord Info Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Info -> Info -> Ordering Source # (<) :: Info -> Info -> Bool Source # (<=) :: Info -> Info -> Bool Source # (>) :: Info -> Info -> Bool Source # (>=) :: Info -> Info -> Bool Source # max :: Info -> Info -> Info Source # min :: Info -> Info -> Info Source #
Data Info Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Info -> c Info Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Info Source # toConstr :: Info -> Constr Source # dataTypeOf :: Info -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Info) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Info) Source # gmapT :: (forall b. Data b => b -> b) -> Info -> Info Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Info -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Info -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Info -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Info -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Info -> m Info Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Info -> m Info Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Info -> m Info Source #
Generic Info Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Info |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Info = D1 ('MetaData "Info" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((C1 ('MetaCons "ClassI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [InstanceDec])) :+: C1 ('MetaCons "ClassOpI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ParentName)))) :+: (C1 ('MetaCons "TyConI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec)) :+: C1 ('MetaCons "FamilyI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [InstanceDec])))) :+: ((C1 ('MetaCons "PrimTyConI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Arity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Unlifted))) :+: C1 ('MetaCons "DataConI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ParentName)))) :+: (C1 ('MetaCons "PatSynI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: (C1 ('MetaCons "VarI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Dec)))) :+: C1 ('MetaCons "TyVarI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))))
Methods from :: Info -> Rep Info x Source # to :: Rep Info x -> Info Source #
Show Info Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Info -> ShowS Source # show :: Info -> String Source # showList :: [Info] -> ShowS Source #
Lift Info Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Info -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Info -> Code m Info Source #
type Rep Info Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Info = D1 ('MetaData "Info" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((C1 ('MetaCons "ClassI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [InstanceDec])) :+: C1 ('MetaCons "ClassOpI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ParentName)))) :+: (C1 ('MetaCons "TyConI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec)) :+: C1 ('MetaCons "FamilyI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Dec) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [InstanceDec])))) :+: ((C1 ('MetaCons "PrimTyConI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Arity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Unlifted))) :+: C1 ('MetaCons "DataConI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ParentName)))) :+: (C1 ('MetaCons "PatSynI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatSynType)) :+: (C1 ('MetaCons "VarI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Dec)))) :+: C1 ('MetaCons "TyVarI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))))))

data Inline Source #

An inline pragma.

Constructors

NoInline |
    { {-# NOINLINE ... #-} }
Inline |
    { {-# INLINE ... #-} }
Inlinable |
    { {-# INLINABLE ... #-} }

#### Instances

Instances details

Ppr Inline Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Inline -> Doc Source # ppr_list :: [Inline] -> Doc Source #
Eq Inline Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Inline -> Inline -> Bool Source # (/=) :: Inline -> Inline -> Bool Source #
Ord Inline Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Inline -> Inline -> Ordering Source # (<) :: Inline -> Inline -> Bool Source # (<=) :: Inline -> Inline -> Bool Source # (>) :: Inline -> Inline -> Bool Source # (>=) :: Inline -> Inline -> Bool Source # max :: Inline -> Inline -> Inline Source # min :: Inline -> Inline -> Inline Source #
Data Inline Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Inline -> c Inline Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Inline Source # toConstr :: Inline -> Constr Source # dataTypeOf :: Inline -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Inline) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Inline) Source # gmapT :: (forall b. Data b => b -> b) -> Inline -> Inline Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Inline -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Inline -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Inline -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Inline -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Inline -> m Inline Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Inline -> m Inline Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Inline -> m Inline Source #
Generic Inline Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Inline |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Inline = D1 ('MetaData "Inline" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoInline" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Inline" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Inlinable" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: Inline -> Rep Inline x Source # to :: Rep Inline x -> Inline Source #
Show Inline Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Inline -> ShowS Source # show :: Inline -> String Source # showList :: [Inline] -> ShowS Source #
Lift Inline Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Inline -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Inline -> Code m Inline Source #
type Rep Inline Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Inline = D1 ('MetaData "Inline" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoInline" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Inline" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Inlinable" 'PrefixI 'False) (U1 :: Type -> Type)))

type InstanceDec = Dec Source #

`InstanceDec` describes a single instance of a class or type function. It is just a `Dec`, but guaranteed to be one of the following:

- `InstanceD` (with empty `[`Dec`]`)
- `DataInstD` or `NewtypeInstD` (with empty derived `[`Name`]`)
- `TySynInstD`

data Lit Source #

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 Integer | `123`. 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 Rational | `1.23`. See above comment on `IntegerL`.
IntPrimL Integer |
    123#
WordPrimL Integer |
    123##
FloatPrimL Rational |
    1.23#
DoublePrimL Rational |
    1.23##
StringPrimL [Word8] | `"string"#`. A primitive C-style string, type `Addr#`
BytesPrimL Bytes | Some raw bytes, type `Addr#`:
CharPrimL Char |
    'c'#

#### Instances

Instances details

Ppr Lit Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Lit -> Doc Source # ppr_list :: [Lit] -> Doc Source #
Eq Lit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Lit -> Lit -> Bool Source # (/=) :: Lit -> Lit -> Bool Source #
Ord Lit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Lit -> Lit -> Ordering Source # (<) :: Lit -> Lit -> Bool Source # (<=) :: Lit -> Lit -> Bool Source # (>) :: Lit -> Lit -> Bool Source # (>=) :: Lit -> Lit -> Bool Source # max :: Lit -> Lit -> Lit Source # min :: Lit -> Lit -> Lit Source #
Data Lit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Lit -> c Lit Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Lit Source # toConstr :: Lit -> Constr Source # dataTypeOf :: Lit -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Lit) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Lit) Source # gmapT :: (forall b. Data b => b -> b) -> Lit -> Lit Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Lit -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Lit -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Lit -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Lit -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Lit -> m Lit Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Lit -> m Lit Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Lit -> m Lit Source #
Generic Lit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Lit |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Lit = D1 ('MetaData "Lit" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((C1 ('MetaCons "CharL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)) :+: C1 ('MetaCons "StringL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) :+: (C1 ('MetaCons "IntegerL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "RationalL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)) :+: C1 ('MetaCons "IntPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer))))) :+: ((C1 ('MetaCons "WordPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "FloatPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)) :+: C1 ('MetaCons "DoublePrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)))) :+: (C1 ('MetaCons "StringPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Word8])) :+: (C1 ('MetaCons "BytesPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bytes)) :+: C1 ('MetaCons "CharPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char))))))
Methods from :: Lit -> Rep Lit x Source # to :: Rep Lit x -> Lit Source #
Show Lit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Lit -> ShowS Source # show :: Lit -> String Source # showList :: [Lit] -> ShowS Source #
Lift Lit Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Lit -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Lit -> Code m Lit Source #
type Rep Lit Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Lit = D1 ('MetaData "Lit" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((C1 ('MetaCons "CharL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)) :+: C1 ('MetaCons "StringL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) :+: (C1 ('MetaCons "IntegerL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "RationalL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)) :+: C1 ('MetaCons "IntPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer))))) :+: ((C1 ('MetaCons "WordPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "FloatPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)) :+: C1 ('MetaCons "DoublePrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)))) :+: (C1 ('MetaCons "StringPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Word8])) :+: (C1 ('MetaCons "BytesPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bytes)) :+: C1 ('MetaCons "CharPrimL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char))))))

data Loc Source #

A location within a source file.

Constructors

Loc |
Fields loc_filename :: String loc_package :: String loc_module :: String loc_start :: CharPos loc_end :: CharPos

#### Instances

Instances details

Ppr Loc Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Loc -> Doc Source # ppr_list :: [Loc] -> Doc Source #
Eq Loc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Loc -> Loc -> Bool Source # (/=) :: Loc -> Loc -> Bool Source #
Ord Loc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Loc -> Loc -> Ordering Source # (<) :: Loc -> Loc -> Bool Source # (<=) :: Loc -> Loc -> Bool Source # (>) :: Loc -> Loc -> Bool Source # (>=) :: Loc -> Loc -> Bool Source # max :: Loc -> Loc -> Loc Source # min :: Loc -> Loc -> Loc Source #
Data Loc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Loc -> c Loc Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Loc Source # toConstr :: Loc -> Constr Source # dataTypeOf :: Loc -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Loc) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Loc) Source # gmapT :: (forall b. Data b => b -> b) -> Loc -> Loc Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Loc -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Loc -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Loc -> m Loc Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc Source #
Generic Loc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Loc |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Loc = D1 ('MetaData "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)))))
Methods from :: Loc -> Rep Loc x Source # to :: Rep Loc x -> Loc Source #
Show Loc Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Loc -> ShowS Source # show :: Loc -> String Source # showList :: [Loc] -> ShowS Source #
Lift Loc Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Loc -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Loc -> Code m Loc Source #
type Rep Loc Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Loc = D1 ('MetaData "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)))))

data Module Source #

Obtained from `reifyModule` and `thisModule`.

Constructors

Module PkgName ModName |

#### Instances

Instances details

Ppr Module Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Module -> Doc Source # ppr_list :: [Module] -> Doc Source #
Eq Module Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Module -> Module -> Bool Source # (/=) :: Module -> Module -> Bool Source #
Ord Module Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Module -> Module -> Ordering Source # (<) :: Module -> Module -> Bool Source # (<=) :: Module -> Module -> Bool Source # (>) :: Module -> Module -> Bool Source # (>=) :: Module -> Module -> Bool Source # max :: Module -> Module -> Module Source # min :: Module -> Module -> Module Source #
Data Module Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Module -> c Module Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Module Source # toConstr :: Module -> Constr Source # dataTypeOf :: Module -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Module) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Module) Source # gmapT :: (forall b. Data b => b -> b) -> Module -> Module Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Module -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Module -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Module -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Module -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Module -> m Module Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Module -> m Module Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Module -> m Module Source #
Generic Module Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Module |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Module = D1 ('MetaData "Module" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Module" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PkgName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName)))
Methods from :: Module -> Rep Module x Source # to :: Rep Module x -> Module Source #
Show Module Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Module -> ShowS Source # show :: Module -> String Source # showList :: [Module] -> ShowS Source #
Lift Module Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Module -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Module -> Code m Module Source #
type Rep Module Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Module = D1 ('MetaData "Module" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Module" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PkgName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName)))

data ModuleInfo Source #

Obtained from `reifyModule` in the `Q` Monad.

Constructors

ModuleInfo [Module] | Contains the import list of the module.

#### Instances

Instances details

Ppr ModuleInfo Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: ModuleInfo -> Doc Source # ppr_list :: [ModuleInfo] -> Doc Source #
Eq ModuleInfo Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: ModuleInfo -> ModuleInfo -> Bool Source # (/=) :: ModuleInfo -> ModuleInfo -> Bool Source #
Ord ModuleInfo Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: ModuleInfo -> ModuleInfo -> Ordering Source # (<) :: ModuleInfo -> ModuleInfo -> Bool Source # (<=) :: ModuleInfo -> ModuleInfo -> Bool Source # (>) :: ModuleInfo -> ModuleInfo -> Bool Source # (>=) :: ModuleInfo -> ModuleInfo -> Bool Source # max :: ModuleInfo -> ModuleInfo -> ModuleInfo Source # min :: ModuleInfo -> ModuleInfo -> ModuleInfo Source #
Data ModuleInfo Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleInfo -> c ModuleInfo Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleInfo Source # toConstr :: ModuleInfo -> Constr Source # dataTypeOf :: ModuleInfo -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModuleInfo) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleInfo) Source # gmapT :: (forall b. Data b => b -> b) -> ModuleInfo -> ModuleInfo Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleInfo -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleInfo -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ModuleInfo -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleInfo -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleInfo -> m ModuleInfo Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleInfo -> m ModuleInfo Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleInfo -> m ModuleInfo Source #
Generic ModuleInfo Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep ModuleInfo |
Instance details Defined in GHC.Internal.TH.Syntax type Rep ModuleInfo = D1 ('MetaData "ModuleInfo" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ModuleInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Module])))
Methods from :: ModuleInfo -> Rep ModuleInfo x Source # to :: Rep ModuleInfo x -> ModuleInfo Source #
Show ModuleInfo Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> ModuleInfo -> ShowS Source # show :: ModuleInfo -> String Source # showList :: [ModuleInfo] -> ShowS Source #
type Rep ModuleInfo Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep ModuleInfo = D1 ('MetaData "ModuleInfo" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ModuleInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Module])))

data NameFlavour Source #

Constructors

NameS | An unqualified name; dynamically bound
NameQ ModName | A qualified name; dynamically bound
NameU !Uniq | A unique local name
NameL !Uniq | Local name bound outside of the TH AST
NameG NameSpace PkgName ModName | Global 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

#### Instances

Instances details

Eq NameFlavour Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: NameFlavour -> NameFlavour -> Bool Source # (/=) :: NameFlavour -> NameFlavour -> Bool Source #
Ord NameFlavour Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: NameFlavour -> NameFlavour -> Ordering Source # (<) :: NameFlavour -> NameFlavour -> Bool Source # (<=) :: NameFlavour -> NameFlavour -> Bool Source # (>) :: NameFlavour -> NameFlavour -> Bool Source # (>=) :: NameFlavour -> NameFlavour -> Bool Source # max :: NameFlavour -> NameFlavour -> NameFlavour Source # min :: NameFlavour -> NameFlavour -> NameFlavour Source #
Data NameFlavour Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NameFlavour -> c NameFlavour Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NameFlavour Source # toConstr :: NameFlavour -> Constr Source # dataTypeOf :: NameFlavour -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NameFlavour) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameFlavour) Source # gmapT :: (forall b. Data b => b -> b) -> NameFlavour -> NameFlavour Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NameFlavour -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NameFlavour -> r Source # gmapQ :: (forall d. Data d => d -> u) -> NameFlavour -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> NameFlavour -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NameFlavour -> m NameFlavour Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NameFlavour -> m NameFlavour Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NameFlavour -> m NameFlavour Source #
Generic NameFlavour Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep NameFlavour |
Instance details Defined in GHC.Internal.TH.Syntax type Rep NameFlavour = D1 ('MetaData "NameFlavour" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "NameS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NameQ" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName))) :+: (C1 ('MetaCons "NameU" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Uniq)) :+: (C1 ('MetaCons "NameL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Uniq)) :+: C1 ('MetaCons "NameG" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameSpace) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PkgName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName))))))
Methods from :: NameFlavour -> Rep NameFlavour x Source # to :: Rep NameFlavour x -> NameFlavour Source #
Show NameFlavour Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> NameFlavour -> ShowS Source # show :: NameFlavour -> String Source # showList :: [NameFlavour] -> ShowS Source #
Lift NameFlavour Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NameFlavour -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NameFlavour -> Code m NameFlavour Source #
type Rep NameFlavour Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep NameFlavour = D1 ('MetaData "NameFlavour" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "NameS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NameQ" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName))) :+: (C1 ('MetaCons "NameU" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Uniq)) :+: (C1 ('MetaCons "NameL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Uniq)) :+: C1 ('MetaCons "NameG" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NameSpace) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PkgName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModName))))))

data NameIs Source #

Constructors

Alone |
    name
Applied |
    (name)
Infix |
    `name`

#### Instances

Instances details

Lift NameIs Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NameIs -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NameIs -> Code m NameIs Source #

data NameSpace Source #

Constructors

VarName | Variables
DataName | Data constructors
TcClsName | Type constructors and classes; Haskell has them in the same name space for now.
FldName |
Fields fldParent :: !String The textual name of the parent of the field. For a field of a datatype, this is the name of the first constructor of the datatype (regardless of whether this constructor has this field). For a field of a pattern synonym, this is the name of the pattern synonym.

#### Instances

Instances details

Eq NameSpace Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: NameSpace -> NameSpace -> Bool Source # (/=) :: NameSpace -> NameSpace -> Bool Source #
Ord NameSpace Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: NameSpace -> NameSpace -> Ordering Source # (<) :: NameSpace -> NameSpace -> Bool Source # (<=) :: NameSpace -> NameSpace -> Bool Source # (>) :: NameSpace -> NameSpace -> Bool Source # (>=) :: NameSpace -> NameSpace -> Bool Source # max :: NameSpace -> NameSpace -> NameSpace Source # min :: NameSpace -> NameSpace -> NameSpace Source #
Data NameSpace Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NameSpace -> c NameSpace Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NameSpace Source # toConstr :: NameSpace -> Constr Source # dataTypeOf :: NameSpace -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NameSpace) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameSpace) Source # gmapT :: (forall b. Data b => b -> b) -> NameSpace -> NameSpace Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NameSpace -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NameSpace -> r Source # gmapQ :: (forall d. Data d => d -> u) -> NameSpace -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> NameSpace -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NameSpace -> m NameSpace Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NameSpace -> m NameSpace Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NameSpace -> m NameSpace Source #
Generic NameSpace Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep NameSpace |
Instance details Defined in GHC.Internal.TH.Syntax type Rep NameSpace = D1 ('MetaData "NameSpace" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "VarName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataName" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcClsName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FldName" 'PrefixI 'True) (S1 ('MetaSel ('Just "fldParent") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String))))
Methods from :: NameSpace -> Rep NameSpace x Source # to :: Rep NameSpace x -> NameSpace Source #
Show NameSpace Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> NameSpace -> ShowS Source # show :: NameSpace -> String Source # showList :: [NameSpace] -> ShowS Source #
Lift NameSpace Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NameSpace -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NameSpace -> Code m NameSpace Source #
type Rep NameSpace Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep NameSpace = D1 ('MetaData "NameSpace" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "VarName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataName" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TcClsName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FldName" 'PrefixI 'True) (S1 ('MetaSel ('Just "fldParent") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String))))

data NamespaceSpecifier Source #

A way to specify a namespace to look in when GHC needs to find a name's source

Constructors

NoNamespaceSpecifier | Name may be everything; If there are two names in different namespaces, then consider both
TypeNamespaceSpecifier | Name should be a type-level entity, such as a data type, type alias, type family, type class, or type variable
DataNamespaceSpecifier | Name should be a term-level entity, such as a function, data constructor, or pattern synonym

#### Instances

Instances details

Eq NamespaceSpecifier Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool Source # (/=) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool Source #
Ord NamespaceSpecifier Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: NamespaceSpecifier -> NamespaceSpecifier -> Ordering Source # (<) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool Source # (<=) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool Source # (>) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool Source # (>=) :: NamespaceSpecifier -> NamespaceSpecifier -> Bool Source # max :: NamespaceSpecifier -> NamespaceSpecifier -> NamespaceSpecifier Source # min :: NamespaceSpecifier -> NamespaceSpecifier -> NamespaceSpecifier Source #
Data NamespaceSpecifier Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NamespaceSpecifier -> c NamespaceSpecifier Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c NamespaceSpecifier Source # toConstr :: NamespaceSpecifier -> Constr Source # dataTypeOf :: NamespaceSpecifier -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c NamespaceSpecifier) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NamespaceSpecifier) Source # gmapT :: (forall b. Data b => b -> b) -> NamespaceSpecifier -> NamespaceSpecifier Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NamespaceSpecifier -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NamespaceSpecifier -> r Source # gmapQ :: (forall d. Data d => d -> u) -> NamespaceSpecifier -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> NamespaceSpecifier -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NamespaceSpecifier -> m NamespaceSpecifier Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NamespaceSpecifier -> m NamespaceSpecifier Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NamespaceSpecifier -> m NamespaceSpecifier Source #
Generic NamespaceSpecifier Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep NamespaceSpecifier |
Instance details Defined in GHC.Internal.TH.Syntax type Rep NamespaceSpecifier = D1 ('MetaData "NamespaceSpecifier" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoNamespaceSpecifier" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TypeNamespaceSpecifier" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataNamespaceSpecifier" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: NamespaceSpecifier -> Rep NamespaceSpecifier x Source # to :: Rep NamespaceSpecifier x -> NamespaceSpecifier Source #
Show NamespaceSpecifier Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> NamespaceSpecifier -> ShowS Source # show :: NamespaceSpecifier -> String Source # showList :: [NamespaceSpecifier] -> ShowS Source #
Lift NamespaceSpecifier Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NamespaceSpecifier -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NamespaceSpecifier -> Code m NamespaceSpecifier Source #
type Rep NamespaceSpecifier Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep NamespaceSpecifier = D1 ('MetaData "NamespaceSpecifier" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoNamespaceSpecifier" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TypeNamespaceSpecifier" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DataNamespaceSpecifier" 'PrefixI 'False) (U1 :: Type -> Type)))

newtype OccName Source #

An "Occurence Name".

Constructors

OccName String |

#### Instances

Instances details

Eq OccName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: OccName -> OccName -> Bool Source # (/=) :: OccName -> OccName -> Bool Source #
Ord OccName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: OccName -> OccName -> Ordering Source # (<) :: OccName -> OccName -> Bool Source # (<=) :: OccName -> OccName -> Bool Source # (>) :: OccName -> OccName -> Bool Source # (>=) :: OccName -> OccName -> Bool Source # max :: OccName -> OccName -> OccName Source # min :: OccName -> OccName -> OccName Source #
Data OccName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OccName -> c OccName Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OccName Source # toConstr :: OccName -> Constr Source # dataTypeOf :: OccName -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c OccName) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OccName) Source # gmapT :: (forall b. Data b => b -> b) -> OccName -> OccName Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OccName -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OccName -> r Source # gmapQ :: (forall d. Data d => d -> u) -> OccName -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> OccName -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> OccName -> m OccName Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OccName -> m OccName Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OccName -> m OccName Source #
Generic OccName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep OccName |
Instance details Defined in GHC.Internal.TH.Syntax type Rep OccName = D1 ('MetaData "OccName" "GHC.Internal.TH.Syntax" "ghc-internal" 'True) (C1 ('MetaCons "OccName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))
Methods from :: OccName -> Rep OccName x Source # to :: Rep OccName x -> OccName Source #
Show OccName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> OccName -> ShowS Source # show :: OccName -> String Source # showList :: [OccName] -> ShowS Source #
Lift OccName Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => OccName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => OccName -> Code m OccName Source #
type Rep OccName Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep OccName = D1 ('MetaData "OccName" "GHC.Internal.TH.Syntax" "ghc-internal" 'True) (C1 ('MetaCons "OccName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

type ParentName = Name Source #

In `ClassOpI` and `DataConI`, name of the parent class or type

data PatSynArgs Source #

A pattern synonym's argument type.

Constructors

PrefixPatSyn [Name] |
    pattern P {x y z} = p
InfixPatSyn Name Name |
    pattern {x P y} = p
RecordPatSyn [Name] |
    pattern P { {x,y,z} } = p

#### Instances

Instances details

Ppr PatSynArgs Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: PatSynArgs -> Doc Source # ppr_list :: [PatSynArgs] -> Doc Source #
Eq PatSynArgs Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: PatSynArgs -> PatSynArgs -> Bool Source # (/=) :: PatSynArgs -> PatSynArgs -> Bool Source #
Ord PatSynArgs Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: PatSynArgs -> PatSynArgs -> Ordering Source # (<) :: PatSynArgs -> PatSynArgs -> Bool Source # (<=) :: PatSynArgs -> PatSynArgs -> Bool Source # (>) :: PatSynArgs -> PatSynArgs -> Bool Source # (>=) :: PatSynArgs -> PatSynArgs -> Bool Source # max :: PatSynArgs -> PatSynArgs -> PatSynArgs Source # min :: PatSynArgs -> PatSynArgs -> PatSynArgs Source #
Data PatSynArgs Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PatSynArgs -> c PatSynArgs Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PatSynArgs Source # toConstr :: PatSynArgs -> Constr Source # dataTypeOf :: PatSynArgs -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PatSynArgs) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PatSynArgs) Source # gmapT :: (forall b. Data b => b -> b) -> PatSynArgs -> PatSynArgs Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PatSynArgs -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PatSynArgs -> r Source # gmapQ :: (forall d. Data d => d -> u) -> PatSynArgs -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> PatSynArgs -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PatSynArgs -> m PatSynArgs Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynArgs -> m PatSynArgs Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynArgs -> m PatSynArgs Source #
Generic PatSynArgs Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep PatSynArgs |
Instance details Defined in GHC.Internal.TH.Syntax type Rep PatSynArgs = D1 ('MetaData "PatSynArgs" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "PrefixPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: (C1 ('MetaCons "InfixPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "RecordPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))))
Methods from :: PatSynArgs -> Rep PatSynArgs x Source # to :: Rep PatSynArgs x -> PatSynArgs Source #
Show PatSynArgs Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> PatSynArgs -> ShowS Source # show :: PatSynArgs -> String Source # showList :: [PatSynArgs] -> ShowS Source #
Lift PatSynArgs Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => PatSynArgs -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PatSynArgs -> Code m PatSynArgs Source #
type Rep PatSynArgs Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep PatSynArgs = D1 ('MetaData "PatSynArgs" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "PrefixPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: (C1 ('MetaCons "InfixPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "RecordPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))))

data PatSynDir Source #

A pattern synonym's directionality.

Constructors

Unidir |
    pattern P x {<-} p
ImplBidir |
    pattern P x {=} p
ExplBidir [Clause] |
    pattern P x {<-} p where P x = e

#### Instances

Instances details

Ppr PatSynDir Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: PatSynDir -> Doc Source # ppr_list :: [PatSynDir] -> Doc Source #
Eq PatSynDir Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: PatSynDir -> PatSynDir -> Bool Source # (/=) :: PatSynDir -> PatSynDir -> Bool Source #
Ord PatSynDir Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: PatSynDir -> PatSynDir -> Ordering Source # (<) :: PatSynDir -> PatSynDir -> Bool Source # (<=) :: PatSynDir -> PatSynDir -> Bool Source # (>) :: PatSynDir -> PatSynDir -> Bool Source # (>=) :: PatSynDir -> PatSynDir -> Bool Source # max :: PatSynDir -> PatSynDir -> PatSynDir Source # min :: PatSynDir -> PatSynDir -> PatSynDir Source #
Data PatSynDir Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PatSynDir -> c PatSynDir Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PatSynDir Source # toConstr :: PatSynDir -> Constr Source # dataTypeOf :: PatSynDir -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PatSynDir) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PatSynDir) Source # gmapT :: (forall b. Data b => b -> b) -> PatSynDir -> PatSynDir Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PatSynDir -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PatSynDir -> r Source # gmapQ :: (forall d. Data d => d -> u) -> PatSynDir -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> PatSynDir -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PatSynDir -> m PatSynDir Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynDir -> m PatSynDir Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynDir -> m PatSynDir Source #
Generic PatSynDir Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep PatSynDir |
Instance details Defined in GHC.Internal.TH.Syntax type Rep PatSynDir = D1 ('MetaData "PatSynDir" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Unidir" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ImplBidir" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExplBidir" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause]))))
Methods from :: PatSynDir -> Rep PatSynDir x Source # to :: Rep PatSynDir x -> PatSynDir Source #
Show PatSynDir Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> PatSynDir -> ShowS Source # show :: PatSynDir -> String Source # showList :: [PatSynDir] -> ShowS Source #
Lift PatSynDir Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => PatSynDir -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PatSynDir -> Code m PatSynDir Source #
type Rep PatSynDir Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep PatSynDir = D1 ('MetaData "PatSynDir" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Unidir" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ImplBidir" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExplBidir" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Clause]))))

type PatSynType = Type Source #

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 -> t

consisting of four parts:

1. the (possibly empty lists of) universally quantified type variables and required constraints on them.
2. the (possibly empty lists of) existentially quantified type variables and the provided constraints on them.
3. the types `t1`, `t2`, .., `tn` of `x1`, `x2`, .., `xn`, respectively
4. the type `t` of `<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 `pprPatSynType` abbreviates 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.

data Phases Source #

Phase control syntax.

Constructors

AllPhases | The default when unspecified
FromPhase Int |
    [n]
BeforePhase Int |
    [~n]

#### Instances

Instances details

Ppr Phases Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Phases -> Doc Source # ppr_list :: [Phases] -> Doc Source #
Eq Phases Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Phases -> Phases -> Bool Source # (/=) :: Phases -> Phases -> Bool Source #
Ord Phases Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Phases -> Phases -> Ordering Source # (<) :: Phases -> Phases -> Bool Source # (<=) :: Phases -> Phases -> Bool Source # (>) :: Phases -> Phases -> Bool Source # (>=) :: Phases -> Phases -> Bool Source # max :: Phases -> Phases -> Phases Source # min :: Phases -> Phases -> Phases Source #
Data Phases Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Phases -> c Phases Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Phases Source # toConstr :: Phases -> Constr Source # dataTypeOf :: Phases -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Phases) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Phases) Source # gmapT :: (forall b. Data b => b -> b) -> Phases -> Phases Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Phases -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Phases -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Phases -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Phases -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Phases -> m Phases Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Phases -> m Phases Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Phases -> m Phases Source #
Generic Phases Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Phases |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Phases = D1 ('MetaData "Phases" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "AllPhases" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FromPhase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "BeforePhase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))
Methods from :: Phases -> Rep Phases x Source # to :: Rep Phases x -> Phases Source #
Show Phases Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Phases -> ShowS Source # show :: Phases -> String Source # showList :: [Phases] -> ShowS Source #
Lift Phases Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Phases -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Phases -> Code m Phases Source #
type Rep Phases Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Phases = D1 ('MetaData "Phases" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "AllPhases" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FromPhase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "BeforePhase" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))

newtype PkgName Source #

The name of a package.

Constructors

PkgName String |

#### Instances

Instances details

Eq PkgName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: PkgName -> PkgName -> Bool Source # (/=) :: PkgName -> PkgName -> Bool Source #
Ord PkgName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: PkgName -> PkgName -> Ordering Source # (<) :: PkgName -> PkgName -> Bool Source # (<=) :: PkgName -> PkgName -> Bool Source # (>) :: PkgName -> PkgName -> Bool Source # (>=) :: PkgName -> PkgName -> Bool Source # max :: PkgName -> PkgName -> PkgName Source # min :: PkgName -> PkgName -> PkgName Source #
Data PkgName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PkgName -> c PkgName Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PkgName Source # toConstr :: PkgName -> Constr Source # dataTypeOf :: PkgName -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PkgName) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PkgName) Source # gmapT :: (forall b. Data b => b -> b) -> PkgName -> PkgName Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PkgName -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PkgName -> r Source # gmapQ :: (forall d. Data d => d -> u) -> PkgName -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> PkgName -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PkgName -> m PkgName Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PkgName -> m PkgName Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PkgName -> m PkgName Source #
Generic PkgName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep PkgName |
Instance details Defined in GHC.Internal.TH.Syntax type Rep PkgName = D1 ('MetaData "PkgName" "GHC.Internal.TH.Syntax" "ghc-internal" 'True) (C1 ('MetaCons "PkgName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))
Methods from :: PkgName -> Rep PkgName x Source # to :: Rep PkgName x -> PkgName Source #
Show PkgName Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> PkgName -> ShowS Source # show :: PkgName -> String Source # showList :: [PkgName] -> ShowS Source #
Lift PkgName Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => PkgName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PkgName -> Code m PkgName Source #
type Rep PkgName Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep PkgName = D1 ('MetaData "PkgName" "GHC.Internal.TH.Syntax" "ghc-internal" 'True) (C1 ('MetaCons "PkgName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

data Pragma Source #

Constructors

InlineP Name Inline RuleMatch Phases | `{ {-# [inline] [rule match] [phases] [phases] name #-} }`. See `Inline` and `RuleMatch`.
OpaqueP 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" #-} }

Bundled Patterns

pattern SpecialiseP :: Name -> Type -> Maybe Inline -> Phases -> Pragma | Old-form specialise pragma `{ {-# SPECIALISE [INLINE] [phases] (var :: ty) #-} }`. Subsumed by the more general `SpecialiseEP` constructor.

#### Instances

Instances details

Ppr Pragma Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Pragma -> Doc Source # ppr_list :: [Pragma] -> Doc Source #
Eq Pragma Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Pragma -> Pragma -> Bool Source # (/=) :: Pragma -> Pragma -> Bool Source #
Ord Pragma Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Pragma -> Pragma -> Ordering Source # (<) :: Pragma -> Pragma -> Bool Source # (<=) :: Pragma -> Pragma -> Bool Source # (>) :: Pragma -> Pragma -> Bool Source # (>=) :: Pragma -> Pragma -> Bool Source # max :: Pragma -> Pragma -> Pragma Source # min :: Pragma -> Pragma -> Pragma Source #
Data Pragma Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pragma -> c Pragma Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pragma Source # toConstr :: Pragma -> Constr Source # dataTypeOf :: Pragma -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pragma) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pragma) Source # gmapT :: (forall b. Data b => b -> b) -> Pragma -> Pragma Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pragma -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pragma -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Pragma -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Pragma -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pragma -> m Pragma Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pragma -> m Pragma Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pragma -> m Pragma Source #
Generic Pragma Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Pragma |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Pragma = D1 ('MetaData "Pragma" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((C1 ('MetaCons "InlineP" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Inline)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuleMatch) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases))) :+: C1 ('MetaCons "OpaqueP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "SpecialiseEP" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RuleBndr])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Inline)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases)))) :+: C1 ('MetaCons "SpecialiseInstP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "RuleP" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RuleBndr]))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases)))) :+: C1 ('MetaCons "AnnP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AnnTarget) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons "LineP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons "CompleteP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Name))) :+: C1 ('MetaCons "SCCP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))))))
Methods from :: Pragma -> Rep Pragma x Source # to :: Rep Pragma x -> Pragma Source #
Show Pragma Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Pragma -> ShowS Source # show :: Pragma -> String Source # showList :: [Pragma] -> ShowS Source #
Lift Pragma Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Pragma -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Pragma -> Code m Pragma Source #
type Rep Pragma Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Pragma = D1 ('MetaData "Pragma" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (((C1 ('MetaCons "InlineP" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Inline)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuleMatch) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases))) :+: C1 ('MetaCons "OpaqueP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "SpecialiseEP" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RuleBndr])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Inline)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases)))) :+: C1 ('MetaCons "SpecialiseInstP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "RuleP" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [TyVarBndr ()])) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RuleBndr]))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Phases)))) :+: C1 ('MetaCons "AnnP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AnnTarget) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons "LineP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: (C1 ('MetaCons "CompleteP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Name))) :+: C1 ('MetaCons "SCCP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))))))

class (MonadIO m, MonadFail m) => Quasi (m :: Type -> Type) where Source #

Minimal complete definition

qNewName, qReport, qRecover, qLookupName, qReify, qReifyFixity, qReifyType, qReifyInstances, qReifyRoles, qReifyAnnotations, qReifyModule, qReifyConStrictness, qLocation, qGetPackageRoot, qAddDependentFile, qAddTempFile, qAddTopDecls, qAddForeignFilePath, qAddModFinalizer, qAddCorePlugin, qGetQ, qPutQ, qIsExtEnabled, qExtsEnabled, qPutDoc, qGetDoc

Methods

qNewName :: String -> m Name Source #

Fresh names. See `newName`.

qReport :: Bool -> String -> m () Source #

Report an error (True) or warning (False) ...but carry on; use `fail` to stop. See `report`.

qRecover Source #

Arguments

:: m a | the error handler
-> m a | action which may fail
-> m a | Recover from the monadic `fail`

See `recover`.

qLookupName :: Bool -> String -> m (Maybe Name) Source #

True = type namespace, False = value namespace. See `lookupName`.

qReify :: Name -> m Info Source #

See `reify`.

qReifyFixity :: Name -> m (Maybe Fixity) Source #

See `reifyFixity`.

qReifyType :: Name -> m Type Source #

See `reifyType`.

qReifyInstances :: Name -> [Type] -> m [Dec] Source #

Is (n tys) an instance? Returns list of matching instance Decs (with empty sub-Decs) Works for classes and type functions. See `reifyInstances`.

qReifyRoles :: Name -> m [Role] Source #

See `reifyRoles`.

qReifyAnnotations :: Data a => AnnLookup -> m [a] Source #

See `reifyAnnotations`.

qReifyModule :: Module -> m ModuleInfo Source #

See `reifyModule`.

qReifyConStrictness :: Name -> m [DecidedStrictness] Source #

See `reifyConStrictness`.

qLocation :: m Loc Source #

See `location`.

qRunIO :: IO a -> m a Source #

Input/output (dangerous). See `runIO`.

qGetPackageRoot :: m FilePath Source #

See `getPackageRoot`.

qAddDependentFile :: FilePath -> m () Source #

See `addDependentFile`.

qAddTempFile :: String -> m FilePath Source #

See `addTempFile`.

qAddTopDecls :: [Dec] -> m () Source #

See `addTopDecls`.

qAddForeignFilePath :: ForeignSrcLang -> String -> m () Source #

See `addForeignFilePath`.

qAddModFinalizer :: Q () -> m () Source #

See `addModFinalizer`.

qAddCorePlugin :: String -> m () Source #

See `addCorePlugin`.

qGetQ :: Typeable a => m (Maybe a) Source #

See `getQ`.

qPutQ :: Typeable a => a -> m () Source #

See `putQ`.

qIsExtEnabled :: Extension -> m Bool Source #

See `isExtEnabled`.

qExtsEnabled :: m [Extension] Source #

See `extsEnabled`.

qPutDoc :: DocLoc -> String -> m () Source #

See `putDoc`.

qGetDoc :: DocLoc -> m (Maybe String) Source #

See `getDoc`.

#### Instances

Instances details

Quasi Q Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods qNewName :: String -> Q Name Source # qReport :: Bool -> String -> Q () Source # qRecover :: Q a -> Q a -> Q a Source # qLookupName :: Bool -> String -> Q (Maybe Name) Source # qReify :: Name -> Q Info Source # qReifyFixity :: Name -> Q (Maybe Fixity) Source # qReifyType :: Name -> Q Type Source # qReifyInstances :: Name -> [Type] -> Q [Dec] Source # qReifyRoles :: Name -> Q [Role] Source # qReifyAnnotations :: Data a => AnnLookup -> Q [a] Source # qReifyModule :: Module -> Q ModuleInfo Source # qReifyConStrictness :: Name -> Q [DecidedStrictness] Source # qLocation :: Q Loc Source # qRunIO :: IO a -> Q a Source # qGetPackageRoot :: Q FilePath Source # qAddDependentFile :: FilePath -> Q () Source # qAddTempFile :: String -> Q FilePath Source # qAddTopDecls :: [Dec] -> Q () Source # qAddForeignFilePath :: ForeignSrcLang -> String -> Q () Source # qAddModFinalizer :: Q () -> Q () Source # qAddCorePlugin :: String -> Q () Source # qGetQ :: Typeable a => Q (Maybe a) Source # qPutQ :: Typeable a => a -> Q () Source # qIsExtEnabled :: Extension -> Q Bool Source # qExtsEnabled :: Q [Extension] Source # qPutDoc :: DocLoc -> String -> Q () Source # qGetDoc :: DocLoc -> Q (Maybe String) Source #
Quasi IO Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods qNewName :: String -> IO Name Source # qReport :: Bool -> String -> IO () Source # qRecover :: IO a -> IO a -> IO a Source # qLookupName :: Bool -> String -> IO (Maybe Name) Source # qReify :: Name -> IO Info Source # qReifyFixity :: Name -> IO (Maybe Fixity) Source # qReifyType :: Name -> IO Type Source # qReifyInstances :: Name -> [Type] -> IO [Dec] Source # qReifyRoles :: Name -> IO [Role] Source # qReifyAnnotations :: Data a => AnnLookup -> IO [a] Source # qReifyModule :: Module -> IO ModuleInfo Source # qReifyConStrictness :: Name -> IO [DecidedStrictness] Source # qLocation :: IO Loc Source # qRunIO :: IO a -> IO a Source # qGetPackageRoot :: IO FilePath Source # qAddDependentFile :: FilePath -> IO () Source # qAddTempFile :: String -> IO FilePath Source # qAddTopDecls :: [Dec] -> IO () Source # qAddForeignFilePath :: ForeignSrcLang -> String -> IO () Source # qAddModFinalizer :: Q () -> IO () Source # qAddCorePlugin :: String -> IO () Source # qGetQ :: Typeable a => IO (Maybe a) Source # qPutQ :: Typeable a => a -> IO () Source # qIsExtEnabled :: Extension -> IO Bool Source # qExtsEnabled :: IO [Extension] Source # qPutDoc :: DocLoc -> String -> IO () Source # qGetDoc :: DocLoc -> IO (Maybe String) Source #

data Range Source #

A list/enum range expression.

Constructors

FromR Exp |
    [n ..]
FromThenR Exp Exp |
    [n, m ..]
FromToR Exp Exp |
    [n .. m]
FromThenToR Exp Exp Exp |
    [n, m .. k]

#### Instances

Instances details

Ppr Range Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Range -> Doc Source # ppr_list :: [Range] -> Doc Source #
Eq Range Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Range -> Range -> Bool Source # (/=) :: Range -> Range -> Bool Source #
Ord Range Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Range -> Range -> Ordering Source # (<) :: Range -> Range -> Bool Source # (<=) :: Range -> Range -> Bool Source # (>) :: Range -> Range -> Bool Source # (>=) :: Range -> Range -> Bool Source # max :: Range -> Range -> Range Source # min :: Range -> Range -> Range Source #
Data Range Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Range -> c Range Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Range Source # toConstr :: Range -> Constr Source # dataTypeOf :: Range -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Range) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Range) Source # gmapT :: (forall b. Data b => b -> b) -> Range -> Range Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Range -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Range -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Range -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Range -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Range -> m Range Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Range -> m Range Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Range -> m Range Source #
Generic Range Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Range |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Range = D1 ('MetaData "Range" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "FromR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "FromThenR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons "FromToR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "FromThenToR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))
Methods from :: Range -> Rep Range x Source # to :: Rep Range x -> Range Source #
Show Range Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Range -> ShowS Source # show :: Range -> String Source # showList :: [Range] -> ShowS Source #
Lift Range Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Range -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Range -> Code m Range Source #
type Rep Range Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Range = D1 ('MetaData "Range" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "FromR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "FromThenR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp))) :+: (C1 ('MetaCons "FromToR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)) :+: C1 ('MetaCons "FromThenToR" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exp)))))

data Role Source #

Role annotations

Constructors

NominalR |
    nominal
RepresentationalR |
    representational
PhantomR |
    phantom
InferR |
    _

#### Instances

Instances details

Ppr Role Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: Role -> Doc Source # ppr_list :: [Role] -> Doc Source #
Eq Role Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Role -> Role -> Bool Source # (/=) :: Role -> Role -> Bool Source #
Ord Role Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Role -> Role -> Ordering Source # (<) :: Role -> Role -> Bool Source # (<=) :: Role -> Role -> Bool Source # (>) :: Role -> Role -> Bool Source # (>=) :: Role -> Role -> Bool Source # max :: Role -> Role -> Role Source # min :: Role -> Role -> Role Source #
Data Role Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Role -> c Role Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Role Source # toConstr :: Role -> Constr Source # dataTypeOf :: Role -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Role) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Role) Source # gmapT :: (forall b. Data b => b -> b) -> Role -> Role Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Role -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Role -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Role -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Role -> m Role Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Role -> m Role Source #
Generic Role Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Role |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Role = D1 ('MetaData "Role" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "NominalR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RepresentationalR" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PhantomR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InferR" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: Role -> Rep Role x Source # to :: Rep Role x -> Role Source #
Show Role Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Role -> ShowS Source # show :: Role -> String Source # showList :: [Role] -> ShowS Source #
Lift Role Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Role -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Role -> Code m Role Source #
type Rep Role Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Role = D1 ('MetaData "Role" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) ((C1 ('MetaCons "NominalR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RepresentationalR" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PhantomR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InferR" 'PrefixI 'False) (U1 :: Type -> Type)))

data RuleMatch Source #

A `CONLIKE` modifier, as in one of the various inline pragmas, or lack thereof (`FunLike`).

Constructors

ConLike |
    { {-# CONLIKE [inline] ... #-} }
FunLike |
    { {-# [inline] ... #-} }

#### Instances

Instances details

Ppr RuleMatch Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: RuleMatch -> Doc Source # ppr_list :: [RuleMatch] -> Doc Source #
Eq RuleMatch Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: RuleMatch -> RuleMatch -> Bool Source # (/=) :: RuleMatch -> RuleMatch -> Bool Source #
Ord RuleMatch Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: RuleMatch -> RuleMatch -> Ordering Source # (<) :: RuleMatch -> RuleMatch -> Bool Source # (<=) :: RuleMatch -> RuleMatch -> Bool Source # (>) :: RuleMatch -> RuleMatch -> Bool Source # (>=) :: RuleMatch -> RuleMatch -> Bool Source # max :: RuleMatch -> RuleMatch -> RuleMatch Source # min :: RuleMatch -> RuleMatch -> RuleMatch Source #
Data RuleMatch Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RuleMatch -> c RuleMatch Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RuleMatch Source # toConstr :: RuleMatch -> Constr Source # dataTypeOf :: RuleMatch -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RuleMatch) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RuleMatch) Source # gmapT :: (forall b. Data b => b -> b) -> RuleMatch -> RuleMatch Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RuleMatch -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RuleMatch -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RuleMatch -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RuleMatch -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RuleMatch -> m RuleMatch Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleMatch -> m RuleMatch Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleMatch -> m RuleMatch Source #
Generic RuleMatch Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep RuleMatch |
Instance details Defined in GHC.Internal.TH.Syntax type Rep RuleMatch = D1 ('MetaData "RuleMatch" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ConLike" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FunLike" 'PrefixI 'False) (U1 :: Type -> Type))
Methods from :: RuleMatch -> Rep RuleMatch x Source # to :: Rep RuleMatch x -> RuleMatch Source #
Show RuleMatch Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> RuleMatch -> ShowS Source # show :: RuleMatch -> String Source # showList :: [RuleMatch] -> ShowS Source #
Lift RuleMatch Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => RuleMatch -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => RuleMatch -> Code m RuleMatch Source #
type Rep RuleMatch Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep RuleMatch = D1 ('MetaData "RuleMatch" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "ConLike" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FunLike" 'PrefixI 'False) (U1 :: Type -> Type))

data Safety Source #

A safety level, as in a `Foreign` declaration.

Constructors

Unsafe |
Safe |
Interruptible |

#### Instances

Instances details

Eq Safety Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Safety -> Safety -> Bool Source # (/=) :: Safety -> Safety -> Bool Source #
Ord Safety Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Safety -> Safety -> Ordering Source # (<) :: Safety -> Safety -> Bool Source # (<=) :: Safety -> Safety -> Bool Source # (>) :: Safety -> Safety -> Bool Source # (>=) :: Safety -> Safety -> Bool Source # max :: Safety -> Safety -> Safety Source # min :: Safety -> Safety -> Safety Source #
Data Safety Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Safety -> c Safety Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Safety Source # toConstr :: Safety -> Constr Source # dataTypeOf :: Safety -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Safety) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Safety) Source # gmapT :: (forall b. Data b => b -> b) -> Safety -> Safety Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Safety -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Safety -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #
Generic Safety Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Safety |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Safety = D1 ('MetaData "Safety" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Unsafe" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Safe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Interruptible" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: Safety -> Rep Safety x Source # to :: Rep Safety x -> Safety Source #
Show Safety Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Safety -> ShowS Source # show :: Safety -> String Source # showList :: [Safety] -> ShowS Source #
Lift Safety Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Safety -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Safety -> Code m Safety Source #
type Rep Safety Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Safety = D1 ('MetaData "Safety" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "Unsafe" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Safe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Interruptible" 'PrefixI 'False) (U1 :: Type -> Type)))

data SourceStrictness Source #

`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

NoSourceStrictness |
    C a
SourceLazy |
    C {~}a
SourceStrict |
    C {!}a

#### Instances

Instances details

Ppr SourceStrictness Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: SourceStrictness -> Doc Source # ppr_list :: [SourceStrictness] -> Doc Source #
Eq SourceStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: SourceStrictness -> SourceStrictness -> Bool Source # (/=) :: SourceStrictness -> SourceStrictness -> Bool Source #
Ord SourceStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: SourceStrictness -> SourceStrictness -> Ordering Source # (<) :: SourceStrictness -> SourceStrictness -> Bool Source # (<=) :: SourceStrictness -> SourceStrictness -> Bool Source # (>) :: SourceStrictness -> SourceStrictness -> Bool Source # (>=) :: SourceStrictness -> SourceStrictness -> Bool Source # max :: SourceStrictness -> SourceStrictness -> SourceStrictness Source # min :: SourceStrictness -> SourceStrictness -> SourceStrictness Source #
Data SourceStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourceStrictness -> c SourceStrictness Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourceStrictness Source # toConstr :: SourceStrictness -> Constr Source # dataTypeOf :: SourceStrictness -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourceStrictness) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourceStrictness) Source # gmapT :: (forall b. Data b => b -> b) -> SourceStrictness -> SourceStrictness Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourceStrictness -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourceStrictness -> r Source # gmapQ :: (forall d. Data d => d -> u) -> SourceStrictness -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> SourceStrictness -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourceStrictness -> m SourceStrictness Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceStrictness -> m SourceStrictness Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceStrictness -> m SourceStrictness Source #
Generic SourceStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep SourceStrictness |
Instance details Defined in GHC.Internal.TH.Syntax type Rep SourceStrictness = D1 ('MetaData "SourceStrictness" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoSourceStrictness" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SourceLazy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SourceStrict" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: SourceStrictness -> Rep SourceStrictness x Source # to :: Rep SourceStrictness x -> SourceStrictness Source #
Show SourceStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> SourceStrictness -> ShowS Source # show :: SourceStrictness -> String Source # showList :: [SourceStrictness] -> ShowS Source #
Lift SourceStrictness Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => SourceStrictness -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => SourceStrictness -> Code m SourceStrictness Source #
type Rep SourceStrictness Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep SourceStrictness = D1 ('MetaData "SourceStrictness" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoSourceStrictness" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SourceLazy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SourceStrict" 'PrefixI 'False) (U1 :: Type -> Type)))

data SourceUnpackedness Source #

`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

NoSourceUnpackedness |
    C a
SourceNoUnpack |
    C { {-# NOUNPACK #-} } a
SourceUnpack |
    C { {-# UNPACK #-} } a

#### Instances

Instances details

Ppr SourceUnpackedness Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: SourceUnpackedness -> Doc Source # ppr_list :: [SourceUnpackedness] -> Doc Source #
Eq SourceUnpackedness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: SourceUnpackedness -> SourceUnpackedness -> Bool Source # (/=) :: SourceUnpackedness -> SourceUnpackedness -> Bool Source #
Ord SourceUnpackedness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: SourceUnpackedness -> SourceUnpackedness -> Ordering Source # (<) :: SourceUnpackedness -> SourceUnpackedness -> Bool Source # (<=) :: SourceUnpackedness -> SourceUnpackedness -> Bool Source # (>) :: SourceUnpackedness -> SourceUnpackedness -> Bool Source # (>=) :: SourceUnpackedness -> SourceUnpackedness -> Bool Source # max :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness Source # min :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness Source #
Data SourceUnpackedness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourceUnpackedness -> c SourceUnpackedness Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourceUnpackedness Source # toConstr :: SourceUnpackedness -> Constr Source # dataTypeOf :: SourceUnpackedness -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourceUnpackedness) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourceUnpackedness) Source # gmapT :: (forall b. Data b => b -> b) -> SourceUnpackedness -> SourceUnpackedness Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourceUnpackedness -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourceUnpackedness -> r Source # gmapQ :: (forall d. Data d => d -> u) -> SourceUnpackedness -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> SourceUnpackedness -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourceUnpackedness -> m SourceUnpackedness Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceUnpackedness -> m SourceUnpackedness Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceUnpackedness -> m SourceUnpackedness Source #
Generic SourceUnpackedness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep SourceUnpackedness |
Instance details Defined in GHC.Internal.TH.Syntax type Rep SourceUnpackedness = D1 ('MetaData "SourceUnpackedness" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoSourceUnpackedness" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SourceNoUnpack" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SourceUnpack" 'PrefixI 'False) (U1 :: Type -> Type)))
Methods from :: SourceUnpackedness -> Rep SourceUnpackedness x Source # to :: Rep SourceUnpackedness x -> SourceUnpackedness Source #
Show SourceUnpackedness Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> SourceUnpackedness -> ShowS Source # show :: SourceUnpackedness -> String Source # showList :: [SourceUnpackedness] -> ShowS Source #
Lift SourceUnpackedness Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => SourceUnpackedness -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => SourceUnpackedness -> Code m SourceUnpackedness Source #
type Rep SourceUnpackedness Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep SourceUnpackedness = D1 ('MetaData "SourceUnpackedness" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NoSourceUnpackedness" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SourceNoUnpack" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SourceUnpack" 'PrefixI 'False) (U1 :: Type -> Type)))

data Specificity Source #

The specificity of a type variable in a `forall ...`.

Constructors

SpecifiedSpec |
    a
InferredSpec |
    {a}

#### Instances

Instances details

PprFlag Specificity Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods pprTyVarBndr :: TyVarBndr Specificity -> Doc Source #
Eq Specificity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: Specificity -> Specificity -> Bool Source # (/=) :: Specificity -> Specificity -> Bool Source #
Ord Specificity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: Specificity -> Specificity -> Ordering Source # (<) :: Specificity -> Specificity -> Bool Source # (<=) :: Specificity -> Specificity -> Bool Source # (>) :: Specificity -> Specificity -> Bool Source # (>=) :: Specificity -> Specificity -> Bool Source # max :: Specificity -> Specificity -> Specificity Source # min :: Specificity -> Specificity -> Specificity Source #
Data Specificity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Specificity -> c Specificity Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Specificity Source # toConstr :: Specificity -> Constr Source # dataTypeOf :: Specificity -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Specificity) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Specificity) Source # gmapT :: (forall b. Data b => b -> b) -> Specificity -> Specificity Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Specificity -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Specificity -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Specificity -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Specificity -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Specificity -> m Specificity Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Specificity -> m Specificity Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Specificity -> m Specificity Source #
Generic Specificity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep Specificity |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Specificity = D1 ('MetaData "Specificity" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "SpecifiedSpec" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InferredSpec" 'PrefixI 'False) (U1 :: Type -> Type))
Methods from :: Specificity -> Rep Specificity x Source # to :: Rep Specificity x -> Specificity Source #
Show Specificity Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> Specificity -> ShowS Source # show :: Specificity -> String Source # showList :: [Specificity] -> ShowS Source #
DefaultBndrFlag Specificity Source # |
Instance details Defined in Language.Haskell.TH.Lib Methods defaultBndrFlag :: Specificity Source #
Lift Specificity Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Specificity -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Specificity -> Code m Specificity Source #
type Rep Specificity Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep Specificity = D1 ('MetaData "Specificity" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "SpecifiedSpec" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InferredSpec" 'PrefixI 'False) (U1 :: Type -> Type))

type Strict = Bang Source #

As of `template-haskell-2.11.0.0`, `Strict` has been replaced by `Bang`.

type StrictType = BangType Source #

As of `template-haskell-2.11.0.0`, `StrictType` has been replaced by `BangType`.

type SumAlt = Int Source #

In `UnboxedSumE` and `UnboxedSumP`, the number associated with a particular data constructor. `SumAlt`s are one-indexed and should never exceed the value of its corresponding `SumArity`. For example:

- `(#_|#)` has `SumAlt` 1 (out of a total `SumArity` of 2)
- `(#|_#)` has `SumAlt` 2 (out of a total `SumArity` of 2)

type SumArity = Int Source #

In `UnboxedSumE`, `UnboxedSumT`, and `UnboxedSumP`, the total number of `SumAlt`s. For example, `(#|#)` has a `SumArity` of 2.

newtype TExp (a :: TYPE r) Source #

Typed wrapper around an `Exp`.

This is the typed representation of terms produced by typed quotes.

Representation-polymorphic since template-haskell-2.16.0.0.

Constructors

TExp |
Fields unType :: Exp Underlying untyped Template Haskell expression

#### Instances

Instances details

Lift (TExp a :: Type) Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TExp a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TExp a -> Code m (TExp a) Source #

data TyLit Source #

Type-level literals.

Constructors

NumTyLit Integer |
    2
StrTyLit String |
    "Hello"
CharTyLit Char | `'C'`, @since 4.16.0.0

#### Instances

Instances details

Ppr TyLit Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: TyLit -> Doc Source # ppr_list :: [TyLit] -> Doc Source #
Eq TyLit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: TyLit -> TyLit -> Bool Source # (/=) :: TyLit -> TyLit -> Bool Source #
Ord TyLit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: TyLit -> TyLit -> Ordering Source # (<) :: TyLit -> TyLit -> Bool Source # (<=) :: TyLit -> TyLit -> Bool Source # (>) :: TyLit -> TyLit -> Bool Source # (>=) :: TyLit -> TyLit -> Bool Source # max :: TyLit -> TyLit -> TyLit Source # min :: TyLit -> TyLit -> TyLit Source #
Data TyLit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyLit -> c TyLit Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TyLit Source # toConstr :: TyLit -> Constr Source # dataTypeOf :: TyLit -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TyLit) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TyLit) Source # gmapT :: (forall b. Data b => b -> b) -> TyLit -> TyLit Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyLit -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyLit -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TyLit -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TyLit -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyLit -> m TyLit Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyLit -> m TyLit Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyLit -> m TyLit Source #
Generic TyLit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep TyLit |
Instance details Defined in GHC.Internal.TH.Syntax type Rep TyLit = D1 ('MetaData "TyLit" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NumTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "StrTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "CharTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char))))
Methods from :: TyLit -> Rep TyLit x Source # to :: Rep TyLit x -> TyLit Source #
Show TyLit Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> TyLit -> ShowS Source # show :: TyLit -> String Source # showList :: [TyLit] -> ShowS Source #
Lift TyLit Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TyLit -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TyLit -> Code m TyLit Source #
type Rep TyLit Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep TyLit = D1 ('MetaData "TyLit" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "NumTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: (C1 ('MetaCons "StrTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "CharTyLit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char))))

data TyVarBndr flag Source #

The `flag` type parameter is instantiated to one of the following types:

- `Specificity` (examples: `ForallC`, `ForallT`)
- `BndrVis` (examples: `DataD`, `ClassD`, etc.)
- `()`, a catch-all type for other forms of binders, including `ForallVisT`, `DataInstD`, `RuleP`, and `TyVarSig`

Constructors

PlainTV Name flag |
    a
KindedTV Name flag Kind |
    (a :: k)

#### Instances

Instances details

Functor TyVarBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods fmap :: (a -> b) -> TyVarBndr a -> TyVarBndr b Source # (<$) :: a -> TyVarBndr b -> TyVarBndr a Source #
Foldable TyVarBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods fold :: Monoid m => TyVarBndr m -> m Source # foldMap :: Monoid m => (a -> m) -> TyVarBndr a -> m Source # foldMap' :: Monoid m => (a -> m) -> TyVarBndr a -> m Source # foldr :: (a -> b -> b) -> b -> TyVarBndr a -> b Source # foldr' :: (a -> b -> b) -> b -> TyVarBndr a -> b Source # foldl :: (b -> a -> b) -> b -> TyVarBndr a -> b Source # foldl' :: (b -> a -> b) -> b -> TyVarBndr a -> b Source # foldr1 :: (a -> a -> a) -> TyVarBndr a -> a Source # foldl1 :: (a -> a -> a) -> TyVarBndr a -> a Source # toList :: TyVarBndr a -> [a] Source # null :: TyVarBndr a -> Bool Source # length :: TyVarBndr a -> Int Source # elem :: Eq a => a -> TyVarBndr a -> Bool Source # maximum :: Ord a => TyVarBndr a -> a Source # minimum :: Ord a => TyVarBndr a -> a Source # sum :: Num a => TyVarBndr a -> a Source # product :: Num a => TyVarBndr a -> a Source #
Traversable TyVarBndr Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods traverse :: Applicative f => (a -> f b) -> TyVarBndr a -> f (TyVarBndr b) Source # sequenceA :: Applicative f => TyVarBndr (f a) -> f (TyVarBndr a) Source # mapM :: Monad m => (a -> m b) -> TyVarBndr a -> m (TyVarBndr b) Source # sequence :: Monad m => TyVarBndr (m a) -> m (TyVarBndr a) Source #
Lift a => Lift (TyVarBndr a :: Type) Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TyVarBndr a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TyVarBndr a -> Code m (TyVarBndr a) Source #
PprFlag flag => Ppr (TyVarBndr flag) Source # |
Instance details Defined in GHC.Boot.TH.Ppr Methods ppr :: TyVarBndr flag -> Doc Source # ppr_list :: [TyVarBndr flag] -> Doc Source #
Eq flag => Eq (TyVarBndr flag) Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: TyVarBndr flag -> TyVarBndr flag -> Bool Source # (/=) :: TyVarBndr flag -> TyVarBndr flag -> Bool Source #
Ord flag => Ord (TyVarBndr flag) Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: TyVarBndr flag -> TyVarBndr flag -> Ordering Source # (<) :: TyVarBndr flag -> TyVarBndr flag -> Bool Source # (<=) :: TyVarBndr flag -> TyVarBndr flag -> Bool Source # (>) :: TyVarBndr flag -> TyVarBndr flag -> Bool Source # (>=) :: TyVarBndr flag -> TyVarBndr flag -> Bool Source # max :: TyVarBndr flag -> TyVarBndr flag -> TyVarBndr flag Source # min :: TyVarBndr flag -> TyVarBndr flag -> TyVarBndr flag Source #
Data flag => Data (TyVarBndr flag) Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyVarBndr flag -> c (TyVarBndr flag) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (TyVarBndr flag) Source # toConstr :: TyVarBndr flag -> Constr Source # dataTypeOf :: TyVarBndr flag -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (TyVarBndr flag)) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (TyVarBndr flag)) Source # gmapT :: (forall b. Data b => b -> b) -> TyVarBndr flag -> TyVarBndr flag Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyVarBndr flag -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyVarBndr flag -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TyVarBndr flag -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TyVarBndr flag -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyVarBndr flag -> m (TyVarBndr flag) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyVarBndr flag -> m (TyVarBndr flag) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyVarBndr flag -> m (TyVarBndr flag) Source #
Generic (TyVarBndr flag) Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep (TyVarBndr flag) |
Instance details Defined in GHC.Internal.TH.Syntax type Rep (TyVarBndr flag) = D1 ('MetaData "TyVarBndr" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "PlainTV" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 flag)) :+: C1 ('MetaCons "KindedTV" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 flag) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))))
Methods from :: TyVarBndr flag -> Rep (TyVarBndr flag) x Source # to :: Rep (TyVarBndr flag) x -> TyVarBndr flag Source #
Show flag => Show (TyVarBndr flag) Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> TyVarBndr flag -> ShowS Source # show :: TyVarBndr flag -> String Source # showList :: [TyVarBndr flag] -> ShowS Source #
type Rep (TyVarBndr flag) Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep (TyVarBndr flag) = D1 ('MetaData "TyVarBndr" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "PlainTV" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 flag)) :+: C1 ('MetaCons "KindedTV" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 flag) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind))))

data TypeFamilyHead Source #

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

TypeFamilyHead Name [TyVarBndr BndrVis] FamilyResultSig (Maybe InjectivityAnn) |

#### Instances

Instances details

Eq TypeFamilyHead Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods (==) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source # (/=) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source #
Ord TypeFamilyHead Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods compare :: TypeFamilyHead -> TypeFamilyHead -> Ordering Source # (<) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source # (<=) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source # (>) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source # (>=) :: TypeFamilyHead -> TypeFamilyHead -> Bool Source # max :: TypeFamilyHead -> TypeFamilyHead -> TypeFamilyHead Source # min :: TypeFamilyHead -> TypeFamilyHead -> TypeFamilyHead Source #
Data TypeFamilyHead Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TypeFamilyHead -> c TypeFamilyHead Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TypeFamilyHead Source # toConstr :: TypeFamilyHead -> Constr Source # dataTypeOf :: TypeFamilyHead -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TypeFamilyHead) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TypeFamilyHead) Source # gmapT :: (forall b. Data b => b -> b) -> TypeFamilyHead -> TypeFamilyHead Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TypeFamilyHead -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TypeFamilyHead -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TypeFamilyHead -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TypeFamilyHead -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TypeFamilyHead -> m TypeFamilyHead Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeFamilyHead -> m TypeFamilyHead Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeFamilyHead -> m TypeFamilyHead Source #
Generic TypeFamilyHead Source # |
Instance details Defined in GHC.Internal.TH.Syntax Associated Types
type Rep TypeFamilyHead |
Instance details Defined in GHC.Internal.TH.Syntax type Rep TypeFamilyHead = D1 ('MetaData "TypeFamilyHead" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "TypeFamilyHead" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FamilyResultSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe InjectivityAnn)))))
Methods from :: TypeFamilyHead -> Rep TypeFamilyHead x Source # to :: Rep TypeFamilyHead x -> TypeFamilyHead Source #
Show TypeFamilyHead Source # |
Instance details Defined in GHC.Internal.TH.Syntax Methods showsPrec :: Int -> TypeFamilyHead -> ShowS Source # show :: TypeFamilyHead -> String Source # showList :: [TypeFamilyHead] -> ShowS Source #
Lift TypeFamilyHead Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TypeFamilyHead -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TypeFamilyHead -> Code m TypeFamilyHead Source #
type Rep TypeFamilyHead Source # |
Instance details Defined in GHC.Internal.TH.Syntax type Rep TypeFamilyHead = D1 ('MetaData "TypeFamilyHead" "GHC.Internal.TH.Syntax" "ghc-internal" 'False) (C1 ('MetaCons "TypeFamilyHead" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVarBndr BndrVis])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FamilyResultSig) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe InjectivityAnn)))))

type Uniq = Integer Source #

`Uniq` is used by GHC to distinguish names from each other.

type Unlifted = Bool Source #

In `PrimTyConI`, is the type constructor unlifted?

type VarStrictType = VarBangType Source #

As of `template-haskell-2.11.0.0`, `VarStrictType` has been replaced by `VarBangType`.

makeRelativeToProject :: FilePath -> Q FilePath Source #

The input is a filepath, which if relative is offset by the package root.

liftString :: Quote m => String -> m Exp Source #

class Lift (t :: TYPE r) where Source #

A `Lift` instance can have any of its values turned into a Template Haskell expression. This is needed when a value used within a Template Haskell quotation is bound outside the Oxford brackets (`[| ... |]` or `[|| ... ||]`) but not at the top level. As an example:

    add1 :: Int -> Code Q Int
    add1 x = [|| x + 1 ||]

Template Haskell has no way of knowing what value `x` will take on at splice-time, so it requires the type of `x` to be an instance of `Lift`.

A `Lift` instance must satisfy `$(lift x) ≡ x` and `$$(liftTyped x) ≡ x` for all `x`, where `$(...)` and `$$(...)` are Template Haskell splices. It is additionally expected that ``lift` x ≡ `unTypeCode` (`liftTyped` x)`.

`Lift` instances can be derived automatically by use of the `-XDeriveLift` GHC language extension:

    {-# LANGUAGE DeriveLift #-}
    module Foo where

    import Language.Haskell.TH.Syntax

    data Bar a = Bar1 a (Bar a) | Bar2 String
      deriving Lift

Representation-polymorphic since template-haskell-2.16.0.0.

This is exposed both from the `template-haskell-lift` and `template-haskell` packages. Consider importing it from the more stable `template-haskell-lift` if you don't need the full breadth of the `template-haskell` interface.

Minimal complete definition

liftTyped

Methods

lift :: Quote m => t -> m Exp Source #

Turn a value into a Template Haskell expression, suitable for use in a splice.

default lift :: forall m. (r ~ LiftedRep, Quote m) => t -> m Exp Source #

liftTyped :: forall (m :: Type -> Type). Quote m => t -> Code m t Source #

Turn a value into a Template Haskell typed expression, suitable for use in a typed splice.

Since: template-haskell-2.16.0.0

#### Instances

Instances details

Lift Addr# Source # | Produces an `Addr#` literal from the NUL-terminated C-string starting at the given memory address. Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Addr# -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Addr# -> Code m Addr# Source #
Lift Double# Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Double# -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Double# -> Code m Double# Source #
Lift Float# Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Float# -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Float# -> Code m Float# Source #
Lift Int# Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Int# -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Int# -> Code m Int# Source #
Lift ByteArray Source # |
Instance details Defined in Data.Array.Byte Methods lift :: Quote m => ByteArray -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ByteArray -> Code m ByteArray Source #
Lift Void Source # | Since: template-haskell-2.15.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Void -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Void -> Code m Void Source #
Lift ForeignSrcLang Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => ForeignSrcLang -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ForeignSrcLang -> Code m ForeignSrcLang Source #
Lift Int16 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Int16 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Int16 -> Code m Int16 Source #
Lift Int32 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Int32 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Int32 -> Code m Int32 Source #
Lift Int64 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Int64 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Int64 -> Code m Int64 Source #
Lift Int8 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Int8 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Int8 -> Code m Int8 Source #
Lift Extension Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Extension -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Extension -> Code m Extension Source #
Lift AnnLookup Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => AnnLookup -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => AnnLookup -> Code m AnnLookup Source #
Lift AnnTarget Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => AnnTarget -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => AnnTarget -> Code m AnnTarget Source #
Lift Bang Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Bang -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Bang -> Code m Bang Source #
Lift BndrVis Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => BndrVis -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => BndrVis -> Code m BndrVis Source #
Lift Body Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Body -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Body -> Code m Body Source #
Lift Bytes Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Bytes -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Bytes -> Code m Bytes Source #
Lift Callconv Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Callconv -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Callconv -> Code m Callconv Source #
Lift Clause Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Clause -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Clause -> Code m Clause Source #
Lift Con Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Con -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Con -> Code m Con Source #
Lift Dec Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Dec -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Dec -> Code m Dec Source #
Lift DecidedStrictness Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DecidedStrictness -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DecidedStrictness -> Code m DecidedStrictness Source #
Lift DerivClause Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DerivClause -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DerivClause -> Code m DerivClause Source #
Lift DerivStrategy Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DerivStrategy -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DerivStrategy -> Code m DerivStrategy Source #
Lift DocLoc Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => DocLoc -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => DocLoc -> Code m DocLoc Source #
Lift Exp Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Exp -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Exp -> Code m Exp Source #
Lift FamilyResultSig Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => FamilyResultSig -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => FamilyResultSig -> Code m FamilyResultSig Source #
Lift Fixity Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Fixity -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Fixity -> Code m Fixity Source #
Lift FixityDirection Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => FixityDirection -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => FixityDirection -> Code m FixityDirection Source #
Lift Foreign Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Foreign -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Foreign -> Code m Foreign Source #
Lift FunDep Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => FunDep -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => FunDep -> Code m FunDep Source #
Lift Guard Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Guard -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Guard -> Code m Guard Source #
Lift Info Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Info -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Info -> Code m Info Source #
Lift InjectivityAnn Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => InjectivityAnn -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => InjectivityAnn -> Code m InjectivityAnn Source #
Lift Inline Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Inline -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Inline -> Code m Inline Source #
Lift Lit Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Lit -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Lit -> Code m Lit Source #
Lift Loc Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Loc -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Loc -> Code m Loc Source #
Lift Match Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Match -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Match -> Code m Match Source #
Lift ModName Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => ModName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => ModName -> Code m ModName Source #
Lift Module Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Module -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Module -> Code m Module Source #
Lift Name Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Name -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Name -> Code m Name Source #
Lift NameFlavour Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NameFlavour -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NameFlavour -> Code m NameFlavour Source #
Lift NameIs Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NameIs -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NameIs -> Code m NameIs Source #
Lift NameSpace Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NameSpace -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NameSpace -> Code m NameSpace Source #
Lift NamespaceSpecifier Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NamespaceSpecifier -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NamespaceSpecifier -> Code m NamespaceSpecifier Source #
Lift OccName Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => OccName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => OccName -> Code m OccName Source #
Lift Overlap Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Overlap -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Overlap -> Code m Overlap Source #
Lift Pat Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Pat -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Pat -> Code m Pat Source #
Lift PatSynArgs Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => PatSynArgs -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PatSynArgs -> Code m PatSynArgs Source #
Lift PatSynDir Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => PatSynDir -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PatSynDir -> Code m PatSynDir Source #
Lift Phases Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Phases -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Phases -> Code m Phases Source #
Lift PkgName Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => PkgName -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => PkgName -> Code m PkgName Source #
Lift Pragma Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Pragma -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Pragma -> Code m Pragma Source #
Lift Range Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Range -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Range -> Code m Range Source #
Lift Role Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Role -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Role -> Code m Role Source #
Lift RuleBndr Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => RuleBndr -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => RuleBndr -> Code m RuleBndr Source #
Lift RuleMatch Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => RuleMatch -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => RuleMatch -> Code m RuleMatch Source #
Lift Safety Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Safety -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Safety -> Code m Safety Source #
Lift SourceStrictness Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => SourceStrictness -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => SourceStrictness -> Code m SourceStrictness Source #
Lift SourceUnpackedness Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => SourceUnpackedness -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => SourceUnpackedness -> Code m SourceUnpackedness Source #
Lift Specificity Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Specificity -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Specificity -> Code m Specificity Source #
Lift Stmt Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Stmt -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Stmt -> Code m Stmt Source #
Lift TyLit Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TyLit -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TyLit -> Code m TyLit Source #
Lift TySynEqn Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TySynEqn -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TySynEqn -> Code m TySynEqn Source #
Lift Type Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Type -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Type -> Code m Type Source #
Lift TypeFamilyHead Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TypeFamilyHead -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TypeFamilyHead -> Code m TypeFamilyHead Source #
Lift Word16 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Word16 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Word16 -> Code m Word16 Source #
Lift Word32 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Word32 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Word32 -> Code m Word32 Source #
Lift Word64 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Word64 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Word64 -> Code m Word64 Source #
Lift Word8 Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Word8 -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Word8 -> Code m Word8 Source #
Lift Integer Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Integer -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Integer -> Code m Integer Source #
Lift Natural Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Natural -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Natural -> Code m Natural Source #
Lift () Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => () -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => () -> Code m () Source #
Lift Bool Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Bool -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Bool -> Code m Bool Source #
Lift Char Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Char -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Char -> Code m Char Source #
Lift Double Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Double -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Double -> Code m Double Source #
Lift Float Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Float -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Float -> Code m Float Source #
Lift Int Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Int -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Int -> Code m Int Source #
Lift Word Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Word -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Word -> Code m Word Source #
Lift Char# Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Char# -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Char# -> Code m Char# Source #
Lift Word# Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Word# -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Word# -> Code m Word# Source #
Lift (# #) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# #) -> Code m (# #) Source #
Lift a => Lift (NonEmpty a :: Type) Source # | Since: template-haskell-2.15.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => NonEmpty a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => NonEmpty a -> Code m (NonEmpty a) Source #
Integral a => Lift (Ratio a :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Ratio a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Ratio a -> Code m (Ratio a) Source #
Lift a => Lift (TyVarBndr a :: Type) Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TyVarBndr a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TyVarBndr a -> Code m (TyVarBndr a) Source #
Lift a => Lift (Maybe a :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Maybe a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Maybe a -> Code m (Maybe a) Source #
Lift a => Lift ([a] :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => [a] -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => [a] -> Code m [a] Source #
Lift (Fixed a :: Type) Source # | Since: base-4.21.0.0
Instance details Defined in Data.Fixed Methods lift :: Quote m => Fixed a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Fixed a -> Code m (Fixed a) Source #
(Lift a, Lift b) => Lift (Either a b :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => Either a b -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Either a b -> Code m (Either a b) Source #
Lift (TExp a :: Type) Source # | Since: template-haskell-2.22.1.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => TExp a -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => TExp a -> Code m (TExp a) Source #
(Lift a, Lift b) => Lift ((a, b) :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (a, b) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (a, b) -> Code m (a, b) Source #
(Lift a, Lift b, Lift c) => Lift ((a, b, c) :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (a, b, c) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c) -> Code m (a, b, c) Source #
(Lift a, Lift b, Lift c, Lift d) => Lift ((a, b, c, d) :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (a, b, c, d) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d) -> Code m (a, b, c, d) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((a, b, c, d, e) :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (a, b, c, d, e) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d, e) -> Code m (a, b, c, d, e) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((a, b, c, d, e, f) :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (a, b, c, d, e, f) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d, e, f) -> Code m (a, b, c, d, e, f) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((a, b, c, d, e, f, g) :: Type) Source # |
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (a, b, c, d, e, f, g) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d, e, f, g) -> Code m (a, b, c, d, e, f, g) Source #
Lift a => Lift ((# a #) :: TYPE ('TupleRep '[LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a #) -> Code m (# a #) Source #
(Lift a, Lift b) => Lift ((# a | b #) :: TYPE ('SumRep '[LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a | b #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b #) -> Code m (# a | b #) Source #
(Lift a, Lift b) => Lift ((# a, b #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a, b #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b #) -> Code m (# a, b #) Source #
(Lift a, Lift b, Lift c) => Lift ((# a | b | c #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a | b | c #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c #) -> Code m (# a | b | c #) Source #
(Lift a, Lift b, Lift c) => Lift ((# a, b, c #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a, b, c #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c #) -> Code m (# a, b, c #) Source #
(Lift a, Lift b, Lift c, Lift d) => Lift ((# a | b | c | d #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a | b | c | d #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d #) -> Code m (# a | b | c | d #) Source #
(Lift a, Lift b, Lift c, Lift d) => Lift ((# a, b, c, d #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a, b, c, d #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d #) -> Code m (# a, b, c, d #) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a | b | c | d | e #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a | b | c | d | e #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d | e #) -> Code m (# a | b | c | d | e #) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a, b, c, d, e #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a, b, c, d, e #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d, e #) -> Code m (# a, b, c, d, e #) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a | b | c | d | e | f #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a | b | c | d | e | f #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d | e | f #) -> Code m (# a | b | c | d | e | f #) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a, b, c, d, e, f #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a, b, c, d, e, f #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d, e, f #) -> Code m (# a, b, c, d, e, f #) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a | b | c | d | e | f | g #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a | b | c | d | e | f | g #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d | e | f | g #) -> Code m (# a | b | c | d | e | f | g #) Source #
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a, b, c, d, e, f, g #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep])) Source # | Since: template-haskell-2.16.0.0
Instance details Defined in GHC.Internal.TH.Lift Methods lift :: Quote m => (# a, b, c, d, e, f, g #) -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d, e, f, g #) -> Code m (# a, b, c, d, e, f, g #) Source #

dataToCodeQ :: forall (m :: Type -> Type) a. (Quote m, Data a) => (forall b. Data b => b -> Maybe (Code m b)) -> a -> Code m a Source #

A typed variant of `dataToExpQ`.

dataToExpQ :: (Quote m, Data a) => (forall b. Data b => b -> Maybe (m Exp)) -> a -> m Exp Source #

`dataToExpQ` converts a value to a `Exp` representation of the same value, in the SYB style. It is generalized to take a function override type-specific cases; see `liftData` for a more commonly used variant.

dataToPatQ :: (Quote m, Data a) => (forall b. Data b => b -> Maybe (m Pat)) -> a -> m Pat Source #

`dataToPatQ` converts a value to a `Pat` representation of the same value, in the SYB style. It takes a function to handle type-specific cases, alternatively, pass `const Nothing` to get default behavior.

dataToQa :: (Quote m, Data a) => (Name -> k) -> (Lit -> m q) -> (k -> [m q] -> m q) -> (forall b. Data b => b -> Maybe (m q)) -> a -> m q Source #

`dataToQa` is an internal utility function for constructing generic conversion functions from types with `Data` instances to various quasi-quoting representations. See the source of `dataToExpQ` and `dataToPatQ` for two example usages: `mkCon`, `mkLit` and `appQ` are overloadable to account for different syntax for expressions and patterns; `antiQ` allows you to override type-specific cases, a common usage is just `const Nothing`, which results in no overloading.

falseName :: Name Source #

justName :: Name Source #

leftName :: Name Source #

liftData :: (Quote m, Data a) => a -> m Exp Source #

`liftData` is a variant of `lift` in the `Lift` type class which works for any type with a `Data` instance.

liftDataTyped :: forall (m :: Type -> Type) a. (Quote m, Data a) => a -> Code m a Source #

A typed variant of `liftData`.

nonemptyName :: Name Source #

nothingName :: Name Source #

rightName :: Name Source #

trueName :: Name Source #