Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.Tools.Rewrite.ElementTypes
Contents
Synopsis
- type AnnList node = AnnListG node IdDom SrcTemplateStage
- type AnnMaybe node = AnnMaybeG node IdDom SrcTemplateStage
- type Module = Ann UModule IdDom SrcTemplateStage
- type ModuleHead = Ann UModuleHead IdDom SrcTemplateStage
- type ExportSpecs = Ann UExportSpecs IdDom SrcTemplateStage
- type ExportSpec = Ann UExportSpec IdDom SrcTemplateStage
- type IESpec = Ann UIESpec IdDom SrcTemplateStage
- type ImportModifier = Ann UImportModifier IdDom SrcTemplateStage
- type SubSpec = Ann USubSpec IdDom SrcTemplateStage
- type ModulePragma = Ann UModulePragma IdDom SrcTemplateStage
- type FilePragma = Ann UFilePragma IdDom SrcTemplateStage
- type ImportDecl = Ann UImportDecl IdDom SrcTemplateStage
- type ImportSpec = Ann UImportSpec IdDom SrcTemplateStage
- type ImportQualified = Ann UImportQualified IdDom SrcTemplateStage
- type ImportSource = Ann UImportSource IdDom SrcTemplateStage
- type ImportSafe = Ann UImportSafe IdDom SrcTemplateStage
- type TypeNamespace = Ann UTypeNamespace IdDom SrcTemplateStage
- type ImportRenaming = Ann UImportRenaming IdDom SrcTemplateStage
- type ModuleName = Ann UModuleName IdDom SrcTemplateStage
- type LanguageExtension = Ann ULanguageExtension IdDom SrcTemplateStage
- type Decl = Ann UDecl IdDom SrcTemplateStage
- type ClassBody = Ann UClassBody IdDom SrcTemplateStage
- type ClassElement = Ann UClassElement IdDom SrcTemplateStage
- type DeclHead = Ann UDeclHead IdDom SrcTemplateStage
- type InstBody = Ann UInstBody IdDom SrcTemplateStage
- type InstBodyDecl = Ann UInstBodyDecl IdDom SrcTemplateStage
- type GadtConDecl = Ann UGadtConDecl IdDom SrcTemplateStage
- type GadtConType = Ann UGadtConType IdDom SrcTemplateStage
- type FieldWildcard = Ann UFieldWildcard IdDom SrcTemplateStage
- type FunDeps = Ann UFunDeps IdDom SrcTemplateStage
- type FunDep = Ann UFunDep IdDom SrcTemplateStage
- type ConDecl = Ann UConDecl IdDom SrcTemplateStage
- type DataOrNewtypeKeyword = Ann UDataOrNewtypeKeyword IdDom SrcTemplateStage
- type FieldDecl = Ann UFieldDecl IdDom SrcTemplateStage
- type Deriving = Ann UDeriving IdDom SrcTemplateStage
- type DeriveStrategy = Ann UDeriveStrategy IdDom SrcTemplateStage
- type InstanceRule = Ann UInstanceRule IdDom SrcTemplateStage
- type InstanceHead = Ann UInstanceHead IdDom SrcTemplateStage
- type SpecializePragma = Ann USpecializePragma IdDom SrcTemplateStage
- type OverlapPragma = Ann UOverlapPragma IdDom SrcTemplateStage
- type TypeEqn = Ann UTypeEqn IdDom SrcTemplateStage
- type TopLevelPragma = Ann UTopLevelPragma IdDom SrcTemplateStage
- type Rule = Ann URule IdDom SrcTemplateStage
- type RuleVar = Ann URuleVar IdDom SrcTemplateStage
- type AnnotationSubject = Ann UAnnotationSubject IdDom SrcTemplateStage
- type MinimalFormula = Ann UMinimalFormula IdDom SrcTemplateStage
- type SourceRange = Ann USourceRange IdDom SrcTemplateStage
- type TypeFamily = Ann UTypeFamily IdDom SrcTemplateStage
- type TypeFamilySpec = Ann UTypeFamilySpec IdDom SrcTemplateStage
- type InjectivityAnn = Ann UInjectivityAnn IdDom SrcTemplateStage
- type PatternSynonym = Ann UPatternSynonym IdDom SrcTemplateStage
- type PatSynRhs = Ann UPatSynRhs IdDom SrcTemplateStage
- type PatSynLhs = Ann UPatSynLhs IdDom SrcTemplateStage
- type PatSynWhere = Ann UPatSynWhere IdDom SrcTemplateStage
- type PatternSignature = Ann UPatternTypeSignature IdDom SrcTemplateStage
- type Role = Ann URole IdDom SrcTemplateStage
- type CallConv = Ann UCallConv IdDom SrcTemplateStage
- type Safety = Ann USafety IdDom SrcTemplateStage
- type ConlikeAnnot = Ann UConlikeAnnot IdDom SrcTemplateStage
- type PhaseControl = Ann UPhaseControl IdDom SrcTemplateStage
- type ValueBind = Ann UValueBind IdDom SrcTemplateStage
- type Match = Ann UMatch IdDom SrcTemplateStage
- type MatchLhs = Ann UMatchLhs IdDom SrcTemplateStage
- type Rhs = Ann URhs IdDom SrcTemplateStage
- type GuardedRhs = Ann UGuardedRhs IdDom SrcTemplateStage
- type RhsGuard = Ann URhsGuard IdDom SrcTemplateStage
- type LocalBind = Ann ULocalBind IdDom SrcTemplateStage
- type LocalBinds = Ann ULocalBinds IdDom SrcTemplateStage
- type FixitySignature = Ann UFixitySignature IdDom SrcTemplateStage
- type TypeSignature = Ann UTypeSignature IdDom SrcTemplateStage
- type Type = Ann UType IdDom SrcTemplateStage
- type TyVar = Ann UTyVar IdDom SrcTemplateStage
- type Context = Ann UContext IdDom SrcTemplateStage
- type Assertion = Ann UAssertion IdDom SrcTemplateStage
- type KindConstraint = Ann UKindConstraint IdDom SrcTemplateStage
- type Kind = Ann UKind IdDom SrcTemplateStage
- type PromotedKind = Ann (UPromoted UKind) IdDom SrcTemplateStage
- type Expr = Ann UExpr IdDom SrcTemplateStage
- type Alt = Ann UAlt IdDom SrcTemplateStage
- type CaseRhs = Ann UCaseRhs IdDom SrcTemplateStage
- type GuardedCaseRhs = Ann UGuardedCaseRhs IdDom SrcTemplateStage
- type FieldUpdate = Ann UFieldUpdate IdDom SrcTemplateStage
- type TupSecElem = Ann UTupSecElem IdDom SrcTemplateStage
- type ExprPragma = Ann UExprPragma IdDom SrcTemplateStage
- type Cmd = Ann UCmd IdDom SrcTemplateStage
- type CmdAlt = Ann UCmdAlt IdDom SrcTemplateStage
- type ArrowApp = Ann UArrowAppl IdDom SrcTemplateStage
- type Stmt = Ann UStmt IdDom SrcTemplateStage
- type DoKind = Ann UDoKind IdDom SrcTemplateStage
- type CompStmt = Ann UCompStmt IdDom SrcTemplateStage
- type ListCompBody = Ann UListCompBody IdDom SrcTemplateStage
- type CmdStmt = Ann UCmdStmt IdDom SrcTemplateStage
- type Pattern = Ann UPattern IdDom SrcTemplateStage
- type PatternField = Ann UPatternField IdDom SrcTemplateStage
- type Splice = Ann USplice IdDom SrcTemplateStage
- type Bracket = Ann UBracket IdDom SrcTemplateStage
- type QuasiQuote = Ann UQuasiQuote IdDom SrcTemplateStage
- type Literal = Ann ULiteral IdDom SrcTemplateStage
- type Operator = Ann UOperator IdDom SrcTemplateStage
- type Name = Ann UName IdDom SrcTemplateStage
- type QualifiedName = Ann UQualifiedName IdDom SrcTemplateStage
- type NamePart = Ann UNamePart IdDom SrcTemplateStage
- type StringNode = Ann UStringNode IdDom SrcTemplateStage
- type MaybeContext = AnnMaybe UContext
- type MaybeDeriving = AnnMaybe UDeriving
- type MaybeDeriveStrategy = AnnMaybe UDeriveStrategy
- type MaybeLocalBinds = AnnMaybe ULocalBinds
- type MaybeTypeFamilySpec = AnnMaybe UTypeFamilySpec
- type MaybeKindConstraint = AnnMaybe UKindConstraint
- type MaybeClassBody = AnnMaybe UClassBody
- type MaybeInstBody = AnnMaybe UInstBody
- type MaybeExpr = AnnMaybe UExpr
- type MaybeExportSpecs = AnnMaybe UExportSpecs
- type MaybeImportQualified = AnnMaybe UImportQualified
- type MaybeImportSource = AnnMaybe UImportSource
- type MaybeImportSafe = AnnMaybe UImportSafe
- type MaybeImportSpec = AnnMaybe UImportSpec
- type MaybeModuleHead = AnnMaybe UModuleHead
- type MaybeImportModifier = AnnMaybe UImportModifier
- type MaybeModulePragma = AnnMaybe UModulePragma
- type MaybeSubSpec = AnnMaybe USubSpec
- type MaybeStringNode = AnnMaybe UStringNode
- type MaybeImportRenaming = AnnMaybe UImportRenaming
- type MaybeSafety = AnnMaybe USafety
- type MaybePhaseControl = AnnMaybe UPhaseControl
- type MaybeConlikeAnnot = AnnMaybe UConlikeAnnot
- type MaybeFunDeps = AnnMaybe UFunDeps
- type MatchList = AnnList UMatch
- type DeclList = AnnList UDecl
- type PatternList = AnnList UPattern
- type OperatorList = AnnList UOperator
- type NameList = AnnList UName
- type LocalBindList = AnnList ULocalBind
- type IESpecList = AnnList UIESpec
- type RhsGuardList = AnnList URhsGuard
- type GuardedRhsList = AnnList UGuardedRhs
- type GuardedCaseRhsList = AnnList UGuardedCaseRhs
- type ConDeclList = AnnList UConDecl
- type TypeEqnList = AnnList UTypeEqn
- type TypeList = AnnList UType
- type FieldDeclList = AnnList UFieldDecl
- type ExprList = AnnList UExpr
- type FieldUpdateList = AnnList UFieldUpdate
- type GadtConDeclList = AnnList UGadtConDecl
- type ClassElementList = AnnList UClassElement
- type InstBodyDeclList = AnnList UInstBodyDecl
- type InstanceHeadList = AnnList UInstanceHead
- type AltList = AnnList UAlt
- type StmtList = AnnList UStmt
- type KindList = AnnList UKind
- type TyVarList = AnnList UTyVar
- type ListCompBodyList = AnnList UListCompBody
- type ExportSpecList = AnnList UExportSpec
- type FilePragmaList = AnnList UFilePragma
- type ImportDeclList = AnnList UImportDecl
- type PatternFieldList = AnnList UPatternField
- type AssertionList = AnnList UAssertion
- type CompStmtList = AnnList UCompStmt
- type RuleList = AnnList URule
- type RuleVarList = AnnList URuleVar
- type RoleList = AnnList URole
- type MinimalFormulaList = AnnList UMinimalFormula
- type FunDepList = AnnList UFunDep
- type TupSecElemList = AnnList UTupSecElem
- type CmdList = AnnList UCmd
- type CmdAltList = AnnList UCmdAlt
- type CmdStmtList = AnnList UCmdStmt
- type LanguageExtensionList = AnnList ULanguageExtension
- type StringNodeList = AnnList UStringNode
- type NamePartList = AnnList UNamePart
- type DerivingList = AnnList UDeriving
Documentation
Modules
type Module = Ann UModule IdDom SrcTemplateStage Source #
The representation of a haskell module, that is a separate compilation unit. It may or may not have a header.
type ModuleHead = Ann UModuleHead IdDom SrcTemplateStage Source #
Module declaration with name and (optional) exports
type ExportSpecs = Ann UExportSpecs IdDom SrcTemplateStage Source #
A list of export specifications surrounded by parentheses
type ExportSpec = Ann UExportSpec IdDom SrcTemplateStage Source #
Export specifier
type IESpec = Ann UIESpec IdDom SrcTemplateStage Source #
Marks a name to be imported or exported with related names (subspecifier)
type ImportModifier = Ann UImportModifier IdDom SrcTemplateStage Source #
Specifies the imported element
type SubSpec = Ann USubSpec IdDom SrcTemplateStage Source #
Marks how related names will be imported or exported with a given name
type ModulePragma = Ann UModulePragma IdDom SrcTemplateStage Source #
Pragmas that must be used after the module head
type FilePragma = Ann UFilePragma IdDom SrcTemplateStage Source #
Pragmas that must be used before defining the module
type ImportDecl = Ann UImportDecl IdDom SrcTemplateStage Source #
An import declaration: import Module.Name
type ImportSpec = Ann UImportSpec IdDom SrcTemplateStage Source #
Restriction on the imported names
type ImportQualified = Ann UImportQualified IdDom SrcTemplateStage Source #
Marks the import as qualified: qualified
type ImportSource = Ann UImportSource IdDom SrcTemplateStage Source #
Marks the import as source: {-# SOURCE #-}
type ImportSafe = Ann UImportSafe IdDom SrcTemplateStage Source #
Marks the import as safe: safe
type TypeNamespace = Ann UTypeNamespace IdDom SrcTemplateStage Source #
Marks an imported name to belong to the type namespace: type
type ImportRenaming = Ann UImportRenaming IdDom SrcTemplateStage Source #
Renaming imports ( as A
)
type ModuleName = Ann UModuleName IdDom SrcTemplateStage Source #
The name of a module
type LanguageExtension = Ann ULanguageExtension IdDom SrcTemplateStage Source #
The name of the enabled language extension, for example ( LambdaCase
)
Declarations
type ClassBody = Ann UClassBody IdDom SrcTemplateStage Source #
The list of declarations that can appear in a typeclass
type ClassElement = Ann UClassElement IdDom SrcTemplateStage Source #
Members of a class declaration
type InstBody = Ann UInstBody IdDom SrcTemplateStage Source #
Instance body is the implementation of the class functions ( where a x = 1; b x = 2
)
type InstBodyDecl = Ann UInstBodyDecl IdDom SrcTemplateStage Source #
Declarations inside an instance declaration.
type GadtConDecl = Ann UGadtConDecl IdDom SrcTemplateStage Source #
GADT constructor declaration ( D1 :: { val :: Int } -> T String
)
type GadtConType = Ann UGadtConType IdDom SrcTemplateStage Source #
Type of GADT constructors (can be record types: { val :: Int }
)
type FieldWildcard = Ann UFieldWildcard IdDom SrcTemplateStage Source #
Marker for a field wildcard. Only needed to attach semantic information in a type-safe way.
type FunDeps = Ann UFunDeps IdDom SrcTemplateStage Source #
A list of functional dependencies: | a -> b, c -> d
separated by commas
type FunDep = Ann UFunDep IdDom SrcTemplateStage Source #
A functional dependency, given on the form l1 ... ln -> r1 ... rn
type DataOrNewtypeKeyword = Ann UDataOrNewtypeKeyword IdDom SrcTemplateStage Source #
The data
or the newtype
keyword to define ADTs.
type FieldDecl = Ann UFieldDecl IdDom SrcTemplateStage Source #
Field declaration ( fld :: Int
)
type Deriving = Ann UDeriving IdDom SrcTemplateStage Source #
A deriving clause following a data type declaration. ( deriving Show
or deriving (Show, Eq)
)
type DeriveStrategy = Ann UDeriveStrategy IdDom SrcTemplateStage Source #
A deriving strategy (stock
, newtype
or anyclass
)
type InstanceRule = Ann UInstanceRule IdDom SrcTemplateStage Source #
The instance declaration rule, which is, roughly, the part of the instance declaration before the where keyword.
type InstanceHead = Ann UInstanceHead IdDom SrcTemplateStage Source #
The specification of the class instance declaration
type OverlapPragma = Ann UOverlapPragma IdDom SrcTemplateStage Source #
Overlap pragmas. Can be applied to class declarations and class instance declarations.
type TypeEqn = Ann UTypeEqn IdDom SrcTemplateStage Source #
Type equations as found in closed type families ( T A = S
)
type TopLevelPragma = Ann UTopLevelPragma IdDom SrcTemplateStage Source #
Top level pragmas
type Rule = Ann URule IdDom SrcTemplateStage Source #
A rewrite rule ( "map/map" forall f g xs. map f (map g xs) = map (f.g) xs
)
type RuleVar = Ann URuleVar IdDom SrcTemplateStage Source #
A variable for a rewrite rule. With or without type signature.
type AnnotationSubject = Ann UAnnotationSubject IdDom SrcTemplateStage Source #
Annotation allows you to connect an expression to any declaration.
type MinimalFormula = Ann UMinimalFormula IdDom SrcTemplateStage Source #
Formulas of minimal annotations declaring which functions should be defined.
type SourceRange = Ann USourceRange IdDom SrcTemplateStage Source #
In-AST source ranges (for generated pragmas)
type TypeFamily = Ann UTypeFamily IdDom SrcTemplateStage Source #
Open type and data families
type TypeFamilySpec = Ann UTypeFamilySpec IdDom SrcTemplateStage Source #
Type family specification with kinds specification and injectivity.
type InjectivityAnn = Ann UInjectivityAnn IdDom SrcTemplateStage Source #
Injectivity annotation for type families ( = r | r -> a
)
type PatternSynonym = Ann UPatternSynonym IdDom SrcTemplateStage Source #
Pattern synonyms: pattern Arrow t1 t2 = App "->" [t1, t2]
type PatSynRhs = Ann UPatSynRhs IdDom SrcTemplateStage Source #
Right-hand side of pattern synonym
type PatSynLhs = Ann UPatSynLhs IdDom SrcTemplateStage Source #
Left hand side of a pattern synonym
type PatSynWhere = Ann UPatSynWhere IdDom SrcTemplateStage Source #
Where clause of pattern synonym (explicit expression direction)
type PatternSignature = Ann UPatternTypeSignature IdDom SrcTemplateStage Source #
Pattern type signature declaration ( pattern Succ :: Int -> Int
)
type ConlikeAnnot = Ann UConlikeAnnot IdDom SrcTemplateStage Source #
A CONLIKE
modifier for an INLINE
pragma.
type PhaseControl = Ann UPhaseControl IdDom SrcTemplateStage Source #
Controls the activation of a rewrite rule ( [1]
)
Binds
type ValueBind = Ann UValueBind IdDom SrcTemplateStage Source #
Value binding for top-level and local bindings
type MatchLhs = Ann UMatchLhs IdDom SrcTemplateStage Source #
Something on the left side of the match
type Rhs = Ann URhs IdDom SrcTemplateStage Source #
Right hand side of a value binding (possible with guards): ( = 3
or | x == 1 = 3; | otherwise = 4
)
type GuardedRhs = Ann UGuardedRhs IdDom SrcTemplateStage Source #
A guarded right-hand side of a value binding ( | x > 3 = 2
)
type RhsGuard = Ann URhsGuard IdDom SrcTemplateStage Source #
Guards for value bindings and pattern matches ( Just v x, v 1
)
type LocalBind = Ann ULocalBind IdDom SrcTemplateStage Source #
Bindings that are enabled in local blocks (where or let).
type LocalBinds = Ann ULocalBinds IdDom SrcTemplateStage Source #
Local bindings attached to a declaration ( where x = 42
)
type FixitySignature = Ann UFixitySignature IdDom SrcTemplateStage Source #
A fixity signature ( infixl 5 +, -
).
type TypeSignature = Ann UTypeSignature IdDom SrcTemplateStage Source #
A type signature ( f :: Int -> Int
)
Types
type TyVar = Ann UTyVar IdDom SrcTemplateStage Source #
Type variable declarations (with possible kind annotation)
type Assertion = Ann UAssertion IdDom SrcTemplateStage Source #
A single assertion in the context
Kinds
type KindConstraint = Ann UKindConstraint IdDom SrcTemplateStage Source #
Kind constraint ( :: * -> *
)
type PromotedKind = Ann (UPromoted UKind) IdDom SrcTemplateStage Source #
Values promoted to the kind level
Expressions
type CaseRhs = Ann UCaseRhs IdDom SrcTemplateStage Source #
Right hand side of a match (possible with guards): ( -> 3
or | x == 1 -> 3; | otherwise -> 4
)
type GuardedCaseRhs = Ann UGuardedCaseRhs IdDom SrcTemplateStage Source #
A guarded right-hand side of pattern matches binding ( | x > 3 -> 2
)
type FieldUpdate = Ann UFieldUpdate IdDom SrcTemplateStage Source #
Field update expressions
type TupSecElem = Ann UTupSecElem IdDom SrcTemplateStage Source #
An element of a tuple section that can be an expression or missing (indicating a value from a parameter)
type ExprPragma = Ann UExprPragma IdDom SrcTemplateStage Source #
Pragmas that can be applied to expressions
type ArrowApp = Ann UArrowAppl IdDom SrcTemplateStage Source #
Arrow directions
Statements
type ListCompBody = Ann UListCompBody IdDom SrcTemplateStage Source #
Body of a list comprehension: ( | x <- [1..10]
)
Patterns
type Pattern = Ann UPattern IdDom SrcTemplateStage Source #
Representation of patterns for pattern bindings
Template Haskell
type QuasiQuote = Ann UQuasiQuote IdDom SrcTemplateStage Source #
Template haskell quasi-quotation: [quoter|str]
Literals
Names
type Operator = Ann UOperator IdDom SrcTemplateStage Source #
A definition that functions as an operator
type QualifiedName = Ann UQualifiedName IdDom SrcTemplateStage Source #
Possible qualified names. Contains also implicit names.
Linear implicit parameter: %x
. Non-linear implicit parameter: ?x
.
type StringNode = Ann UStringNode IdDom SrcTemplateStage Source #
Program elements formatted as string literals (import packages, pragma texts)
Optional AST elements
type MaybeContext = AnnMaybe UContext Source #
type MaybeDeriving = AnnMaybe UDeriving Source #
type MaybeLocalBinds = AnnMaybe ULocalBinds Source #
type MaybeClassBody = AnnMaybe UClassBody Source #
type MaybeInstBody = AnnMaybe UInstBody Source #
type MaybeExportSpecs = AnnMaybe UExportSpecs Source #
type MaybeImportSafe = AnnMaybe UImportSafe Source #
type MaybeImportSpec = AnnMaybe UImportSpec Source #
type MaybeModuleHead = AnnMaybe UModuleHead Source #
type MaybeSubSpec = AnnMaybe USubSpec Source #
type MaybeStringNode = AnnMaybe UStringNode Source #
type MaybeSafety = AnnMaybe USafety Source #
type MaybeFunDeps = AnnMaybe UFunDeps Source #
AST elements with multiplicity
type PatternList = AnnList UPattern Source #
type OperatorList = AnnList UOperator Source #
type LocalBindList = AnnList ULocalBind Source #
type IESpecList = AnnList UIESpec Source #
type RhsGuardList = AnnList URhsGuard Source #
type GuardedRhsList = AnnList UGuardedRhs Source #
type ConDeclList = AnnList UConDecl Source #
type TypeEqnList = AnnList UTypeEqn Source #
type FieldDeclList = AnnList UFieldDecl Source #
type FieldUpdateList = AnnList UFieldUpdate Source #
type GadtConDeclList = AnnList UGadtConDecl Source #
type ClassElementList = AnnList UClassElement Source #
type InstBodyDeclList = AnnList UInstBodyDecl Source #
type InstanceHeadList = AnnList UInstanceHead Source #
type ListCompBodyList = AnnList UListCompBody Source #
type ExportSpecList = AnnList UExportSpec Source #
type FilePragmaList = AnnList UFilePragma Source #
type ImportDeclList = AnnList UImportDecl Source #
type PatternFieldList = AnnList UPatternField Source #
type AssertionList = AnnList UAssertion Source #
type CompStmtList = AnnList UCompStmt Source #
type RuleVarList = AnnList URuleVar Source #
type FunDepList = AnnList UFunDep Source #
type TupSecElemList = AnnList UTupSecElem Source #
type CmdAltList = AnnList UCmdAlt Source #
type CmdStmtList = AnnList UCmdStmt Source #
type StringNodeList = AnnList UStringNode Source #
type NamePartList = AnnList UNamePart Source #
type DerivingList = AnnList UDeriving Source #