Copyright | (c) Niklas Broberg 2004-2009, (c) The GHC Team, 1997-2000 |
---|---|
License | BSD-style (see the file LICENSE.txt) |
Maintainer | Niklas Broberg, d00nibro@chalmers.se |
Stability | stable |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
A suite of datatypes describing the (semi-concrete) abstract syntax of Haskell 98 http://www.haskell.org/onlinereport/ plus registered extensions, including:
- multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)
- parameters of type class assertions are unrestricted (FlexibleContexts)
forall
types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)- pattern guards (PatternGuards)
- implicit parameters (ImplicitParameters)
- generalised algebraic data types (GADTs)
- template haskell (TemplateHaskell)
- empty data type declarations (EmptyDataDecls)
- unboxed tuples (UnboxedTuples)
- regular patterns (RegularPatterns)
- HSP-style XML expressions and patterns (XmlSyntax)
All nodes in the syntax tree are annotated with something of a user-definable data type. When parsing, this annotation will contain information about the source location that the particular node comes from.
- data Module l
- = Module l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]
- | XmlPage l (ModuleName l) [ModulePragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]
- | XmlHybrid l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]
- data ModuleHead l = ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l))
- data WarningText l
- data ExportSpecList l = ExportSpecList l [ExportSpec l]
- data ExportSpec l
- = EVar l (Namespace l) (QName l)
- | EAbs l (QName l)
- | EThingAll l (QName l)
- | EThingWith l (QName l) [CName l]
- | EModuleContents l (ModuleName l)
- data ImportDecl l = ImportDecl {
- importAnn :: l
- importModule :: ModuleName l
- importQualified :: Bool
- importSrc :: Bool
- importSafe :: Bool
- importPkg :: Maybe String
- importAs :: Maybe (ModuleName l)
- importSpecs :: Maybe (ImportSpecList l)
- data ImportSpecList l = ImportSpecList l Bool [ImportSpec l]
- data ImportSpec l
- data Assoc l
- = AssocNone l
- | AssocLeft l
- | AssocRight l
- data Namespace l
- = NoNamespace l
- | TypeNamespace l
- data Decl l
- = TypeDecl l (DeclHead l) (Type l)
- | TypeFamDecl l (DeclHead l) (Maybe (Kind l))
- | ClosedTypeFamDecl l (DeclHead l) (Maybe (Kind l)) [TypeEqn l]
- | DataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) [QualConDecl l] (Maybe (Deriving l))
- | GDataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l))
- | DataFamDecl l (Maybe (Context l)) (DeclHead l) (Maybe (Kind l))
- | TypeInsDecl l (Type l) (Type l)
- | DataInsDecl l (DataOrNew l) (Type l) [QualConDecl l] (Maybe (Deriving l))
- | GDataInsDecl l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l))
- | ClassDecl l (Maybe (Context l)) (DeclHead l) [FunDep l] (Maybe [ClassDecl l])
- | InstDecl l (Maybe (Overlap l)) (InstRule l) (Maybe [InstDecl l])
- | DerivDecl l (Maybe (Overlap l)) (InstRule l)
- | InfixDecl l (Assoc l) (Maybe Int) [Op l]
- | DefaultDecl l [Type l]
- | SpliceDecl l (Exp l)
- | TypeSig l [Name l] (Type l)
- | FunBind l [Match l]
- | PatBind l (Pat l) (Rhs l) (Maybe (Binds l))
- | ForImp l (CallConv l) (Maybe (Safety l)) (Maybe String) (Name l) (Type l)
- | ForExp l (CallConv l) (Maybe String) (Name l) (Type l)
- | RulePragmaDecl l [Rule l]
- | DeprPragmaDecl l [([Name l], String)]
- | WarnPragmaDecl l [([Name l], String)]
- | InlineSig l Bool (Maybe (Activation l)) (QName l)
- | InlineConlikeSig l (Maybe (Activation l)) (QName l)
- | SpecSig l (Maybe (Activation l)) (QName l) [Type l]
- | SpecInlineSig l Bool (Maybe (Activation l)) (QName l) [Type l]
- | InstSig l (InstRule l)
- | AnnPragma l (Annotation l)
- | MinimalPragma l (Maybe (BooleanFormula l))
- data DeclHead l
- data InstRule l
- data InstHead l
- data Binds l
- data IPBind l = IPBind l (IPName l) (Exp l)
- data ClassDecl l
- data InstDecl l
- data Deriving l = Deriving l [InstRule l]
- data DataOrNew l
- data ConDecl l
- data FieldDecl l = FieldDecl l [Name l] (Type l)
- data QualConDecl l = QualConDecl l (Maybe [TyVarBind l]) (Maybe (Context l)) (ConDecl l)
- data GadtDecl l = GadtDecl l (Name l) (Maybe [FieldDecl l]) (Type l)
- data BangType l
- = BangedTy l
- | UnpackedTy l
- data Match l
- data Rhs l
- = UnGuardedRhs l (Exp l)
- | GuardedRhss l [GuardedRhs l]
- data GuardedRhs l = GuardedRhs l [Stmt l] (Exp l)
- data Context l
- data FunDep l = FunDep l [Name l] [Name l]
- data Asst l
- data Type l
- = TyForall l (Maybe [TyVarBind l]) (Maybe (Context l)) (Type l)
- | TyFun l (Type l) (Type l)
- | TyTuple l Boxed [Type l]
- | TyList l (Type l)
- | TyParArray l (Type l)
- | TyApp l (Type l) (Type l)
- | TyVar l (Name l)
- | TyCon l (QName l)
- | TyParen l (Type l)
- | TyInfix l (Type l) (QName l) (Type l)
- | TyKind l (Type l) (Kind l)
- | TyPromoted l (Promoted l)
- | TyEquals l (Type l) (Type l)
- | TySplice l (Splice l)
- | TyBang l (BangType l) (Type l)
- data Boxed
- data Kind l
- data TyVarBind l
- = KindedVar l (Name l) (Kind l)
- | UnkindedVar l (Name l)
- data Promoted l
- = PromotedInteger l Integer String
- | PromotedString l String String
- | PromotedCon l Bool (QName l)
- | PromotedList l Bool [Promoted l]
- | PromotedTuple l [Promoted l]
- | PromotedUnit l
- data TypeEqn l = TypeEqn l (Type l) (Type l)
- data Exp l
- = Var l (QName l)
- | IPVar l (IPName l)
- | Con l (QName l)
- | Lit l (Literal l)
- | InfixApp l (Exp l) (QOp l) (Exp l)
- | App l (Exp l) (Exp l)
- | NegApp l (Exp l)
- | Lambda l [Pat l] (Exp l)
- | Let l (Binds l) (Exp l)
- | If l (Exp l) (Exp l) (Exp l)
- | MultiIf l [GuardedRhs l]
- | Case l (Exp l) [Alt l]
- | Do l [Stmt l]
- | MDo l [Stmt l]
- | Tuple l Boxed [Exp l]
- | TupleSection l Boxed [Maybe (Exp l)]
- | List l [Exp l]
- | ParArray l [Exp l]
- | Paren l (Exp l)
- | LeftSection l (Exp l) (QOp l)
- | RightSection l (QOp l) (Exp l)
- | RecConstr l (QName l) [FieldUpdate l]
- | RecUpdate l (Exp l) [FieldUpdate l]
- | EnumFrom l (Exp l)
- | EnumFromTo l (Exp l) (Exp l)
- | EnumFromThen l (Exp l) (Exp l)
- | EnumFromThenTo l (Exp l) (Exp l) (Exp l)
- | ParArrayFromTo l (Exp l) (Exp l)
- | ParArrayFromThenTo l (Exp l) (Exp l) (Exp l)
- | ListComp l (Exp l) [QualStmt l]
- | ParComp l (Exp l) [[QualStmt l]]
- | ParArrayComp l (Exp l) [[QualStmt l]]
- | ExpTypeSig l (Exp l) (Type l)
- | VarQuote l (QName l)
- | TypQuote l (QName l)
- | BracketExp l (Bracket l)
- | SpliceExp l (Splice l)
- | QuasiQuote l String String
- | XTag l (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]
- | XETag l (XName l) [XAttr l] (Maybe (Exp l))
- | XPcdata l String
- | XExpTag l (Exp l)
- | XChildTag l [Exp l]
- | CorePragma l String (Exp l)
- | SCCPragma l String (Exp l)
- | GenPragma l String (Int, Int) (Int, Int) (Exp l)
- | Proc l (Pat l) (Exp l)
- | LeftArrApp l (Exp l) (Exp l)
- | RightArrApp l (Exp l) (Exp l)
- | LeftArrHighApp l (Exp l) (Exp l)
- | RightArrHighApp l (Exp l) (Exp l)
- | LCase l [Alt l]
- data Stmt l
- data QualStmt l
- data FieldUpdate l
- = FieldUpdate l (QName l) (Exp l)
- | FieldPun l (QName l)
- | FieldWildcard l
- data Alt l = Alt l (Pat l) (Rhs l) (Maybe (Binds l))
- data XAttr l = XAttr l (XName l) (Exp l)
- data Pat l
- = PVar l (Name l)
- | PLit l (Sign l) (Literal l)
- | PNPlusK l (Name l) Integer
- | PInfixApp l (Pat l) (QName l) (Pat l)
- | PApp l (QName l) [Pat l]
- | PTuple l Boxed [Pat l]
- | PList l [Pat l]
- | PParen l (Pat l)
- | PRec l (QName l) [PatField l]
- | PAsPat l (Name l) (Pat l)
- | PWildCard l
- | PIrrPat l (Pat l)
- | PatTypeSig l (Pat l) (Type l)
- | PViewPat l (Exp l) (Pat l)
- | PRPat l [RPat l]
- | PXTag l (XName l) [PXAttr l] (Maybe (Pat l)) [Pat l]
- | PXETag l (XName l) [PXAttr l] (Maybe (Pat l))
- | PXPcdata l String
- | PXPatTag l (Pat l)
- | PXRPats l [RPat l]
- | PQuasiQuote l String String
- | PBangPat l (Pat l)
- data PatField l
- data PXAttr l = PXAttr l (XName l) (Pat l)
- data RPat l
- data RPatOp l
- data Literal l
- data Sign l
- data ModuleName l = ModuleName l String
- data QName l
- = Qual l (ModuleName l) (Name l)
- | UnQual l (Name l)
- | Special l (SpecialCon l)
- data Name l
- data QOp l
- data Op l
- data SpecialCon l
- data CName l
- data IPName l
- data XName l
- data Bracket l
- = ExpBracket l (Exp l)
- | PatBracket l (Pat l)
- | TypeBracket l (Type l)
- | DeclBracket l [Decl l]
- data Splice l
- = IdSplice l String
- | ParenSplice l (Exp l)
- data Safety l
- = PlayRisky l
- | PlaySafe l Bool
- | PlayInterruptible l
- data CallConv l
- data ModulePragma l
- = LanguagePragma l [Name l]
- | OptionsPragma l (Maybe Tool) String
- | AnnModulePragma l (Annotation l)
- data Tool
- data Overlap l
- = NoOverlap l
- | Overlap l
- | Incoherent l
- data Rule l = Rule l String (Maybe (Activation l)) (Maybe [RuleVar l]) (Exp l) (Exp l)
- data RuleVar l
- = RuleVar l (Name l)
- | TypedRuleVar l (Name l) (Type l)
- data Activation l
- = ActiveFrom l Int
- | ActiveUntil l Int
- data Annotation l
- data BooleanFormula l
- = VarFormula l (Name l)
- | AndFormula l [BooleanFormula l]
- | OrFormula l [BooleanFormula l]
- | ParenFormula l (BooleanFormula l)
- prelude_mod :: l -> ModuleName l
- main_mod :: l -> ModuleName l
- main_name :: l -> Name l
- unit_con_name :: l -> QName l
- tuple_con_name :: l -> Boxed -> Int -> QName l
- list_cons_name :: l -> QName l
- unboxed_singleton_con_name :: l -> QName l
- unit_con :: l -> Exp l
- tuple_con :: l -> Boxed -> Int -> Exp l
- unboxed_singleton_con :: l -> Exp l
- as_name :: l -> Name l
- qualified_name :: l -> Name l
- hiding_name :: l -> Name l
- minus_name :: l -> Name l
- bang_name :: l -> Name l
- dot_name :: l -> Name l
- star_name :: l -> Name l
- export_name :: l -> Name l
- safe_name :: l -> Name l
- unsafe_name :: l -> Name l
- interruptible_name :: l -> Name l
- threadsafe_name :: l -> Name l
- stdcall_name :: l -> Name l
- ccall_name :: l -> Name l
- cplusplus_name :: l -> Name l
- dotnet_name :: l -> Name l
- jvm_name :: l -> Name l
- js_name :: l -> Name l
- capi_name :: l -> Name l
- forall_name :: l -> Name l
- family_name :: l -> Name l
- unit_tycon_name :: l -> QName l
- fun_tycon_name :: l -> QName l
- list_tycon_name :: l -> QName l
- tuple_tycon_name :: l -> Boxed -> Int -> QName l
- unboxed_singleton_tycon_name :: l -> QName l
- unit_tycon :: l -> Type l
- fun_tycon :: l -> Type l
- list_tycon :: l -> Type l
- tuple_tycon :: l -> Boxed -> Int -> Type l
- unboxed_singleton_tycon :: l -> Type l
- class Functor ast => Annotated ast where
- (=~=) :: (Annotated a, Eq (a ())) => a l1 -> a l2 -> Bool
Modules
A complete Haskell source module.
Module l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l] | an ordinary Haskell module |
XmlPage l (ModuleName l) [ModulePragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l] | a module consisting of a single XML document. The ModuleName never appears in the source but is needed for semantic purposes, it will be the same as the file name. |
XmlHybrid l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l] | a hybrid module combining an XML document with an ordinary module |
Functor Module | |
Foldable Module | |
Traversable Module | |
Annotated Module | |
ExactP Module | |
AppFixity Module | |
Eq l => Eq (Module l) | |
Data l => Data (Module l) | |
Ord l => Ord (Module l) | |
Show l => Show (Module l) | |
Generic (Module l) | |
SrcInfo pos => Pretty (Module pos) | |
SrcInfo loc => Parseable (Module loc) | |
Typeable (* -> *) Module | |
type Rep (Module l) |
data ModuleHead l Source
The head of a module, including the name and export specification.
ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l)) |
Functor ModuleHead | |
Foldable ModuleHead | |
Traversable ModuleHead | |
Annotated ModuleHead | |
ExactP ModuleHead | |
Eq l => Eq (ModuleHead l) | |
Data l => Data (ModuleHead l) | |
Ord l => Ord (ModuleHead l) | |
Show l => Show (ModuleHead l) | |
Generic (ModuleHead l) | |
Pretty (ModuleHead l) | |
Typeable (* -> *) ModuleHead | |
type Rep (ModuleHead l) |
data WarningText l Source
Warning text to optionally use in the module header of e.g. a deprecated module.
Functor WarningText | |
Foldable WarningText | |
Traversable WarningText | |
Annotated WarningText | |
ExactP WarningText | |
Eq l => Eq (WarningText l) | |
Data l => Data (WarningText l) | |
Ord l => Ord (WarningText l) | |
Show l => Show (WarningText l) | |
Generic (WarningText l) | |
Pretty (WarningText l) | |
Typeable (* -> *) WarningText | |
type Rep (WarningText l) |
data ExportSpecList l Source
An explicit export specification.
ExportSpecList l [ExportSpec l] |
Functor ExportSpecList | |
Foldable ExportSpecList | |
Traversable ExportSpecList | |
Annotated ExportSpecList | |
ExactP ExportSpecList | |
Eq l => Eq (ExportSpecList l) | |
Data l => Data (ExportSpecList l) | |
Ord l => Ord (ExportSpecList l) | |
Show l => Show (ExportSpecList l) | |
Generic (ExportSpecList l) | |
Pretty (ExportSpecList l) | |
Typeable (* -> *) ExportSpecList | |
type Rep (ExportSpecList l) |
data ExportSpec l Source
An item in a module's export specification.
EVar l (Namespace l) (QName l) | variable. |
EAbs l (QName l) |
|
EThingAll l (QName l) |
|
EThingWith l (QName l) [CName l] |
|
EModuleContents l (ModuleName l) |
|
Functor ExportSpec | |
Foldable ExportSpec | |
Traversable ExportSpec | |
Annotated ExportSpec | |
ExactP ExportSpec | |
Eq l => Eq (ExportSpec l) | |
Data l => Data (ExportSpec l) | |
Ord l => Ord (ExportSpec l) | |
Show l => Show (ExportSpec l) | |
Generic (ExportSpec l) | |
Pretty (ExportSpec l) | |
Typeable (* -> *) ExportSpec | |
type Rep (ExportSpec l) |
data ImportDecl l Source
An import declaration.
ImportDecl | |
|
Functor ImportDecl | |
Foldable ImportDecl | |
Traversable ImportDecl | |
Annotated ImportDecl | |
ExactP ImportDecl | |
Eq l => Eq (ImportDecl l) | |
Data l => Data (ImportDecl l) | |
Ord l => Ord (ImportDecl l) | |
Show l => Show (ImportDecl l) | |
Generic (ImportDecl l) | |
SrcInfo pos => Pretty (ImportDecl pos) | |
Typeable (* -> *) ImportDecl | |
type Rep (ImportDecl l) |
data ImportSpecList l Source
An explicit import specification list.
ImportSpecList l Bool [ImportSpec l] |
Functor ImportSpecList | |
Foldable ImportSpecList | |
Traversable ImportSpecList | |
Annotated ImportSpecList | |
ExactP ImportSpecList | |
Eq l => Eq (ImportSpecList l) | |
Data l => Data (ImportSpecList l) | |
Ord l => Ord (ImportSpecList l) | |
Show l => Show (ImportSpecList l) | |
Generic (ImportSpecList l) | |
Pretty (ImportSpecList l) | |
Typeable (* -> *) ImportSpecList | |
type Rep (ImportSpecList l) |
data ImportSpec l Source
An import specification, representing a single explicit item imported (or hidden) from a module.
IVar l (Namespace l) (Name l) | variable |
IAbs l (Name l) |
|
IThingAll l (Name l) |
|
IThingWith l (Name l) [CName l] |
|
Functor ImportSpec | |
Foldable ImportSpec | |
Traversable ImportSpec | |
Annotated ImportSpec | |
ExactP ImportSpec | |
Eq l => Eq (ImportSpec l) | |
Data l => Data (ImportSpec l) | |
Ord l => Ord (ImportSpec l) | |
Show l => Show (ImportSpec l) | |
Generic (ImportSpec l) | |
Pretty (ImportSpec l) | |
Typeable (* -> *) ImportSpec | |
type Rep (ImportSpec l) |
Associativity of an operator.
AssocNone l | non-associative operator (declared with |
AssocLeft l | left-associative operator (declared with |
AssocRight l | right-associative operator (declared with |
Namespaces for imports/exports.
Declarations
A top-level declaration.
TypeDecl l (DeclHead l) (Type l) | A type declaration |
TypeFamDecl l (DeclHead l) (Maybe (Kind l)) | A type family declaration |
ClosedTypeFamDecl l (DeclHead l) (Maybe (Kind l)) [TypeEqn l] | A closed type family declaration |
DataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) [QualConDecl l] (Maybe (Deriving l)) | A data OR newtype declaration |
GDataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l)) | A data OR newtype declaration, GADT style |
DataFamDecl l (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) | A data family declaration |
TypeInsDecl l (Type l) (Type l) | A type family instance declaration |
DataInsDecl l (DataOrNew l) (Type l) [QualConDecl l] (Maybe (Deriving l)) | A data family instance declaration |
GDataInsDecl l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l)) | A data family instance declaration, GADT style |
ClassDecl l (Maybe (Context l)) (DeclHead l) [FunDep l] (Maybe [ClassDecl l]) | A declaration of a type class |
InstDecl l (Maybe (Overlap l)) (InstRule l) (Maybe [InstDecl l]) | An declaration of a type class instance |
DerivDecl l (Maybe (Overlap l)) (InstRule l) | A standalone deriving declaration |
InfixDecl l (Assoc l) (Maybe Int) [Op l] | A declaration of operator fixity |
DefaultDecl l [Type l] | A declaration of default types |
SpliceDecl l (Exp l) | A Template Haskell splicing declaration |
TypeSig l [Name l] (Type l) | A type signature declaration |
FunBind l [Match l] | A set of function binding clauses |
PatBind l (Pat l) (Rhs l) (Maybe (Binds l)) | A pattern binding |
ForImp l (CallConv l) (Maybe (Safety l)) (Maybe String) (Name l) (Type l) | A foreign import declaration |
ForExp l (CallConv l) (Maybe String) (Name l) (Type l) | A foreign export declaration |
RulePragmaDecl l [Rule l] | A RULES pragma |
DeprPragmaDecl l [([Name l], String)] | A DEPRECATED pragma |
WarnPragmaDecl l [([Name l], String)] | A WARNING pragma |
InlineSig l Bool (Maybe (Activation l)) (QName l) | An INLINE pragma |
InlineConlikeSig l (Maybe (Activation l)) (QName l) | An INLINE CONLIKE pragma |
SpecSig l (Maybe (Activation l)) (QName l) [Type l] | A SPECIALISE pragma |
SpecInlineSig l Bool (Maybe (Activation l)) (QName l) [Type l] | A SPECIALISE INLINE pragma |
InstSig l (InstRule l) | A SPECIALISE instance pragma |
AnnPragma l (Annotation l) | An ANN pragma |
MinimalPragma l (Maybe (BooleanFormula l)) | A MINIMAL pragma |
Functor Decl | |
Foldable Decl | |
Traversable Decl | |
Annotated Decl | |
ExactP Decl | |
AppFixity Decl | |
Eq l => Eq (Decl l) | |
Data l => Data (Decl l) | |
Ord l => Ord (Decl l) | |
Show l => Show (Decl l) | |
Generic (Decl l) | |
SrcInfo pos => Pretty (Decl pos) | |
SrcInfo loc => Parseable (Decl loc) | |
Typeable (* -> *) Decl | |
type Rep (Decl l) |
The head of a type or class declaration, which consists of the type or class name applied to some type variables
class C a b
is represented as
DHApp () (DHApp () (DHead () (Ident () "C")) (UnkindedVar () (Ident () "a"))) (UnkindedVar () (Ident () "b"))
(where the annotation type l
is instantiated with ()
)
class (a :< b) c
is represented as
DHApp () (DHParen () (DHApp () (DHInfix () (UnkindedVar () (Ident () "a")) (Symbol () ":<")) (UnkindedVar () (Ident () "b")))) (UnkindedVar () (Ident () "c"))
The instance declaration rule, which is, roughly, the part of the instance declaration before the where
keyword.
Example: instance Ord a => Ord (Maybe a)
is represented as
IRule () Nothing (Just (CxSingle () (ClassA () (UnQual () (Ident () "Ord")) [ TyVar () (Ident () "a") ]))) (IHApp () (IHCon () (UnQual () (Ident () "Ord"))) (TyParen () (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyVar () (Ident () "a")))))
An optional explicit forall after instance
is supported:
instance forall a . Ord a => Ord (Maybe a) where
becomes
IRule () (Just [ UnkindedVar () (Ident () "a") ]) ...
The instance head. The split between rule/head allow us to represent
instance (Bounded a => Bounded [a]) where
faithfully.
The structure of InstHead
follows one of DeclHead
.
For example, instance C (Maybe a) Int where
is represented as
IHApp () (IHApp () (IHCon () (UnQual () (Ident () "C"))) (TyParen () (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyVar () (Ident () "a"))))) (TyCon () (UnQual () (Ident () "Int")))))
A binding group inside a let
or where
clause.
A binding of an implicit parameter.
Type classes and instances
Declarations inside a class declaration.
ClsDecl l (Decl l) | ordinary declaration |
ClsDataFam l (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) | declaration of an associated data type |
ClsTyFam l (DeclHead l) (Maybe (Kind l)) | declaration of an associated type synonym |
ClsTyDef l (Type l) (Type l) | default choice for an associated type synonym |
ClsDefSig l (Name l) (Type l) | default signature |
Functor ClassDecl | |
Foldable ClassDecl | |
Traversable ClassDecl | |
Annotated ClassDecl | |
ExactP ClassDecl | |
AppFixity ClassDecl | |
Eq l => Eq (ClassDecl l) | |
Data l => Data (ClassDecl l) | |
Ord l => Ord (ClassDecl l) | |
Show l => Show (ClassDecl l) | |
Generic (ClassDecl l) | |
SrcInfo loc => Pretty (ClassDecl loc) | |
Typeable (* -> *) ClassDecl | |
type Rep (ClassDecl l) |
Declarations inside an instance declaration.
InsDecl l (Decl l) | ordinary declaration |
InsType l (Type l) (Type l) | an associated type definition |
InsData l (DataOrNew l) (Type l) [QualConDecl l] (Maybe (Deriving l)) | an associated data type implementation |
InsGData l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l)) | an associated data type implemented using GADT style |
Functor InstDecl | |
Foldable InstDecl | |
Traversable InstDecl | |
Annotated InstDecl | |
ExactP InstDecl | |
AppFixity InstDecl | |
Eq l => Eq (InstDecl l) | |
Data l => Data (InstDecl l) | |
Ord l => Ord (InstDecl l) | |
Show l => Show (InstDecl l) | |
Generic (InstDecl l) | |
SrcInfo loc => Pretty (InstDecl loc) | |
Typeable (* -> *) InstDecl | |
type Rep (InstDecl l) |
A deriving clause following a data type declaration.
Data type declarations
A flag stating whether a declaration is a data or newtype declaration.
Declaration of an ordinary data constructor.
Declaration of a (list of) named field(s).
Functor FieldDecl | |
Foldable FieldDecl | |
Traversable FieldDecl | |
Annotated FieldDecl | |
ExactP FieldDecl | |
Eq l => Eq (FieldDecl l) | |
Data l => Data (FieldDecl l) | |
Ord l => Ord (FieldDecl l) | |
Show l => Show (FieldDecl l) | |
Generic (FieldDecl l) | |
SrcInfo l => Pretty (FieldDecl l) | |
Typeable (* -> *) FieldDecl | |
type Rep (FieldDecl l) |
data QualConDecl l Source
A single constructor declaration within a data type declaration, which may have an existential quantification binding.
Functor QualConDecl | |
Foldable QualConDecl | |
Traversable QualConDecl | |
Annotated QualConDecl | |
ExactP QualConDecl | |
Eq l => Eq (QualConDecl l) | |
Data l => Data (QualConDecl l) | |
Ord l => Ord (QualConDecl l) | |
Show l => Show (QualConDecl l) | |
Generic (QualConDecl l) | |
SrcInfo l => Pretty (QualConDecl l) | |
Typeable (* -> *) QualConDecl | |
type Rep (QualConDecl l) |
A single constructor declaration in a GADT data type declaration.
If the GADT is declared using the record syntax, e.g.
data Ty where TCon :: { field1 :: Int, field2 :: Bool } -> Ty
then the fields are stored as a list of FieldDecl
s, and the final type
(Ty
in the above example) is stored in the last Type
field.
If the GADT is declared using the ordinary syntax, e.g.
data Ty where TCon :: Int -> Bool -> Ty
then
is Maybe
[FieldDecl
l]Nothing
, and the whole constructor's
type (such as Int -> Bool -> Ty
) is stored in the last Type
field.
The type of a constructor argument or field, optionally including a strictness annotation.
BangedTy l | strict component, marked with " |
UnpackedTy l | unboxed component, marked with an UNPACK pragma |
Function bindings
Clauses of a function binding.
Match l (Name l) [Pat l] (Rhs l) (Maybe (Binds l)) | A clause defined with prefix notation, i.e. the function name followed by its argument patterns, the right-hand side and an optional where clause. |
InfixMatch l (Pat l) (Name l) [Pat l] (Rhs l) (Maybe (Binds l)) | A clause defined with infix notation, i.e. first its first argument pattern, then the function name, then its following argument(s), the right-hand side and an optional where clause. Note that there can be more than two arguments to a function declared infix, hence the list of pattern arguments. |
The right hand side of a function binding, pattern binding, or a case alternative.
UnGuardedRhs l (Exp l) | unguarded right hand side (exp) |
GuardedRhss l [GuardedRhs l] | guarded right hand side (gdrhs) |
data GuardedRhs l Source
A guarded right hand side |
stmts =
exp, or |
stmts ->
exp
for case alternatives.
The guard is a series of statements when using pattern guards,
otherwise it will be a single qualifier expression.
GuardedRhs l [Stmt l] (Exp l) |
Functor GuardedRhs | |
Foldable GuardedRhs | |
Traversable GuardedRhs | |
Annotated GuardedRhs | |
ExactP GuardedRhs | |
AppFixity GuardedRhs | |
Eq l => Eq (GuardedRhs l) | |
Data l => Data (GuardedRhs l) | |
Ord l => Ord (GuardedRhs l) | |
Show l => Show (GuardedRhs l) | |
Generic (GuardedRhs l) | |
SrcInfo loc => Pretty (GuardedRhs loc) | |
Typeable (* -> *) GuardedRhs | |
type Rep (GuardedRhs l) |
Class Assertions and Contexts
A context is a set of assertions
A functional dependency, given on the form l1 l2 ... ln -> r2 r3 .. rn
Class assertions. In Haskell 98, the argument would be a tyvar, but this definition allows multiple parameters, and allows them to be types. Also extended with support for implicit parameters and equality constraints.
ClassA l (QName l) [Type l] | ordinary class assertion |
VarA l (Name l) | constraint kind assertion, |
InfixA l (Type l) (QName l) (Type l) | class assertion where the class name is given infix |
IParam l (IPName l) (Type l) | implicit parameter assertion |
EqualP l (Type l) (Type l) | type equality constraint |
ParenA l (Asst l) | parenthesised class assertion |
Types
A type qualified with a context. An unqualified type has an empty context.
TyForall l (Maybe [TyVarBind l]) (Maybe (Context l)) (Type l) | qualified type |
TyFun l (Type l) (Type l) | function type |
TyTuple l Boxed [Type l] | tuple type, possibly boxed |
TyList l (Type l) | list syntax, e.g. [a], as opposed to [] a |
TyParArray l (Type l) | parallel array syntax, e.g. [:a:] |
TyApp l (Type l) (Type l) | application of a type constructor |
TyVar l (Name l) | type variable |
TyCon l (QName l) | named type or type constructor |
TyParen l (Type l) | type surrounded by parentheses |
TyInfix l (Type l) (QName l) (Type l) | infix type constructor |
TyKind l (Type l) (Kind l) | type with explicit kind signature |
TyPromoted l (Promoted l) |
|
TyEquals l (Type l) (Type l) | type equality predicate enabled by ConstraintKinds |
TySplice l (Splice l) | template haskell splice type |
TyBang l (BangType l) (Type l) | Strict type marked with " |
Flag denoting whether a tuple is boxed or unboxed.
An explicit kind annotation.
KindStar l |
|
KindBang l |
|
KindFn l (Kind l) (Kind l) |
|
KindParen l (Kind l) | a parenthesised kind |
KindVar l (QName l) |
|
KindApp l (Kind l) (Kind l) | k1 k2 |
KindTuple l [Kind l] |
|
KindList l [Kind l] |
|
A type variable declaration, optionally with an explicit kind annotation.
KindedVar l (Name l) (Kind l) | variable binding with kind annotation |
UnkindedVar l (Name l) | ordinary variable binding |
Bools here are True if there was a leading quote which may be
left out. For example '[k1,k2]
means the same thing as [k1,k2]
.
PromotedInteger l Integer String | parsed value and raw string |
PromotedString l String String | parsed value and raw string |
PromotedCon l Bool (QName l) | |
PromotedList l Bool [Promoted l] | |
PromotedTuple l [Promoted l] | |
PromotedUnit l |
A type equation as found in closed type families.
Expressions
Haskell expressions.
Var l (QName l) | variable |
IPVar l (IPName l) | implicit parameter variable |
Con l (QName l) | data constructor |
Lit l (Literal l) | literal constant |
InfixApp l (Exp l) (QOp l) (Exp l) | infix application |
App l (Exp l) (Exp l) | ordinary application |
NegApp l (Exp l) | negation expression |
Lambda l [Pat l] (Exp l) | lambda expression |
Let l (Binds l) (Exp l) | local declarations with |
If l (Exp l) (Exp l) (Exp l) |
|
MultiIf l [GuardedRhs l] |
|
Case l (Exp l) [Alt l] |
|
Do l [Stmt l] |
|
MDo l [Stmt l] |
|
Tuple l Boxed [Exp l] | tuple expression |
TupleSection l Boxed [Maybe (Exp l)] | tuple section expression, e.g. |
List l [Exp l] | list expression |
ParArray l [Exp l] | parallel array expression |
Paren l (Exp l) | parenthesised expression |
LeftSection l (Exp l) (QOp l) | left section |
RightSection l (QOp l) (Exp l) | right section |
RecConstr l (QName l) [FieldUpdate l] | record construction expression |
RecUpdate l (Exp l) [FieldUpdate l] | record update expression |
EnumFrom l (Exp l) | unbounded arithmetic sequence,
incrementing by 1: |
EnumFromTo l (Exp l) (Exp l) | bounded arithmetic sequence,
incrementing by 1 |
EnumFromThen l (Exp l) (Exp l) | unbounded arithmetic sequence,
with first two elements given |
EnumFromThenTo l (Exp l) (Exp l) (Exp l) | bounded arithmetic sequence,
with first two elements given |
ParArrayFromTo l (Exp l) (Exp l) | Parallel array bounded arithmetic sequence,
incrementing by 1 |
ParArrayFromThenTo l (Exp l) (Exp l) (Exp l) | bounded arithmetic sequence,
with first two elements given |
ListComp l (Exp l) [QualStmt l] | ordinary list comprehension |
ParComp l (Exp l) [[QualStmt l]] | parallel list comprehension |
ParArrayComp l (Exp l) [[QualStmt l]] | parallel array comprehension |
ExpTypeSig l (Exp l) (Type l) | expression with explicit type signature |
VarQuote l (QName l) |
|
TypQuote l (QName l) |
|
BracketExp l (Bracket l) | template haskell bracket expression |
SpliceExp l (Splice l) | template haskell splice expression |
QuasiQuote l String String | quasi-quotaion: |
XTag l (XName l) [XAttr l] (Maybe (Exp l)) [Exp l] | xml element, with attributes and children |
XETag l (XName l) [XAttr l] (Maybe (Exp l)) | empty xml element, with attributes |
XPcdata l String | PCDATA child element |
XExpTag l (Exp l) | escaped haskell expression inside xml |
XChildTag l [Exp l] | children of an xml element |
CorePragma l String (Exp l) | CORE pragma |
SCCPragma l String (Exp l) | SCC pragma |
GenPragma l String (Int, Int) (Int, Int) (Exp l) | GENERATED pragma |
Proc l (Pat l) (Exp l) | arrows proc: |
LeftArrApp l (Exp l) (Exp l) | arrow application (from left): exp |
RightArrApp l (Exp l) (Exp l) | arrow application (from right): exp |
LeftArrHighApp l (Exp l) (Exp l) | higher-order arrow application (from left): exp |
RightArrHighApp l (Exp l) (Exp l) | higher-order arrow application (from right): exp |
LCase l [Alt l] |
|
A statement, representing both a stmt in a do
-expression,
an ordinary qual in a list comprehension, as well as a stmt
in a pattern guard.
Generator l (Pat l) (Exp l) | a generator: pat |
Qualifier l (Exp l) | an exp by itself: in a |
LetStmt l (Binds l) | local bindings |
RecStmt l [Stmt l] | a recursive binding group for arrows |
Functor Stmt | |
Foldable Stmt | |
Traversable Stmt | |
Annotated Stmt | |
ExactP Stmt | |
AppFixity Stmt | |
Eq l => Eq (Stmt l) | |
Data l => Data (Stmt l) | |
Ord l => Ord (Stmt l) | |
Show l => Show (Stmt l) | |
Generic (Stmt l) | |
SrcInfo loc => Pretty (Stmt loc) | |
SrcInfo loc => Parseable (Stmt loc) | |
Typeable (* -> *) Stmt | |
type Rep (Stmt l) |
A general transqual in a list comprehension, which could potentially be a transform of the kind enabled by TransformListComp.
QualStmt l (Stmt l) | an ordinary statement |
ThenTrans l (Exp l) |
|
ThenBy l (Exp l) (Exp l) |
|
GroupBy l (Exp l) |
|
GroupUsing l (Exp l) |
|
GroupByUsing l (Exp l) (Exp l) |
|
Functor QualStmt | |
Foldable QualStmt | |
Traversable QualStmt | |
Annotated QualStmt | |
ExactP QualStmt | |
AppFixity QualStmt | |
Eq l => Eq (QualStmt l) | |
Data l => Data (QualStmt l) | |
Ord l => Ord (QualStmt l) | |
Show l => Show (QualStmt l) | |
Generic (QualStmt l) | |
SrcInfo loc => Pretty (QualStmt loc) | |
Typeable (* -> *) QualStmt | |
type Rep (QualStmt l) |
data FieldUpdate l Source
An fbind in a labeled construction or update expression.
FieldUpdate l (QName l) (Exp l) | ordinary label-expresion pair |
FieldPun l (QName l) | record field pun |
FieldWildcard l | record field wildcard |
Functor FieldUpdate | |
Foldable FieldUpdate | |
Traversable FieldUpdate | |
Annotated FieldUpdate | |
ExactP FieldUpdate | |
AppFixity FieldUpdate | |
Eq l => Eq (FieldUpdate l) | |
Data l => Data (FieldUpdate l) | |
Ord l => Ord (FieldUpdate l) | |
Show l => Show (FieldUpdate l) | |
Generic (FieldUpdate l) | |
SrcInfo loc => Pretty (FieldUpdate loc) | |
Typeable (* -> *) FieldUpdate | |
type Rep (FieldUpdate l) |
An alt alternative in a case
expression.
An xml attribute, which is a name-expression pair.
Patterns
A pattern, to be matched against a value.
PVar l (Name l) | variable |
PLit l (Sign l) (Literal l) | literal constant |
PNPlusK l (Name l) Integer | n+k pattern |
PInfixApp l (Pat l) (QName l) (Pat l) | pattern with an infix data constructor |
PApp l (QName l) [Pat l] | data constructor and argument patterns |
PTuple l Boxed [Pat l] | tuple pattern |
PList l [Pat l] | list pattern |
PParen l (Pat l) | parenthesized pattern |
PRec l (QName l) [PatField l] | labelled pattern, record style |
PAsPat l (Name l) (Pat l) |
|
PWildCard l | wildcard pattern: |
PIrrPat l (Pat l) | irrefutable pattern: |
PatTypeSig l (Pat l) (Type l) | pattern with type signature |
PViewPat l (Exp l) (Pat l) | view patterns of the form |
PRPat l [RPat l] | regular list pattern |
PXTag l (XName l) [PXAttr l] (Maybe (Pat l)) [Pat l] | XML element pattern |
PXETag l (XName l) [PXAttr l] (Maybe (Pat l)) | XML singleton element pattern |
PXPcdata l String | XML PCDATA pattern |
PXPatTag l (Pat l) | XML embedded pattern |
PXRPats l [RPat l] | XML regular list pattern |
PQuasiQuote l String String | quasi quote pattern: |
PBangPat l (Pat l) | strict (bang) pattern: |
An fpat in a labeled record pattern.
PFieldPat l (QName l) (Pat l) | ordinary label-pattern pair |
PFieldPun l (QName l) | record field pun |
PFieldWildcard l | record field wildcard |
Functor PatField | |
Foldable PatField | |
Traversable PatField | |
Annotated PatField | |
ExactP PatField | |
AppFixity PatField | |
Eq l => Eq (PatField l) | |
Data l => Data (PatField l) | |
Ord l => Ord (PatField l) | |
Show l => Show (PatField l) | |
Generic (PatField l) | |
SrcInfo loc => Pretty (PatField loc) | |
Typeable (* -> *) PatField | |
type Rep (PatField l) |
An XML attribute in a pattern.
An entity in a regular pattern.
RPOp l (RPat l) (RPatOp l) | operator pattern, e.g. pat* |
RPEither l (RPat l) (RPat l) | choice pattern, e.g. (1 | 2) |
RPSeq l [RPat l] | sequence pattern, e.g. (| 1, 2, 3 |) |
RPGuard l (Pat l) [Stmt l] | guarded pattern, e.g. (| p | p < 3 |) |
RPCAs l (Name l) (RPat l) | non-linear variable binding, e.g. (foo@:(1 | 2))* |
RPAs l (Name l) (RPat l) | linear variable binding, e.g. foo@(1 | 2) |
RPParen l (RPat l) | parenthesised pattern, e.g. (2*) |
RPPat l (Pat l) | an ordinary pattern |
A regular pattern operator.
Literals
literal
Values of this type hold the abstract value of the literal, along with the
precise string representation used. For example, 10
, 0o12
and 0xa
have the same value representation, but each carry a different string representation.
Char l Char String | character literal |
String l String String | string literal |
Int l Integer String | integer literal |
Frac l Rational String | floating point literal |
PrimInt l Integer String | unboxed integer literal |
PrimWord l Integer String | unboxed word literal |
PrimFloat l Rational String | unboxed float literal |
PrimDouble l Rational String | unboxed double literal |
PrimChar l Char String | unboxed character literal |
PrimString l String String | unboxed string literal |
An indication whether a literal pattern has been negated or not.
Variables, Constructors and Operators
data ModuleName l Source
The name of a Haskell module.
Functor ModuleName | |
Foldable ModuleName | |
Traversable ModuleName | |
Annotated ModuleName | |
ExactP ModuleName | |
Eq l => Eq (ModuleName l) | |
Data l => Data (ModuleName l) | |
Ord l => Ord (ModuleName l) | |
Show l => Show (ModuleName l) | |
Generic (ModuleName l) | |
Pretty (ModuleName l) | |
Typeable (* -> *) ModuleName | |
type Rep (ModuleName l) |
This type is used to represent qualified variables, and also qualified constructors.
Qual l (ModuleName l) (Name l) | name qualified with a module name |
UnQual l (Name l) | unqualified local name |
Special l (SpecialCon l) | built-in constructor with special syntax |
This type is used to represent variables, and also constructors.
Possibly qualified infix operators (qop), appearing in expressions.
Operators appearing in infix
declarations are never qualified.
data SpecialCon l Source
Constructors with special syntax. These names are never qualified, and always refer to builtin type or data constructors.
UnitCon l | unit type and data constructor |
ListCon l | list type constructor |
FunCon l | function type constructor |
TupleCon l Boxed Int | n-ary tuple type and data
constructors |
Cons l | list data constructor |
UnboxedSingleCon l | unboxed singleton tuple constructor |
Functor SpecialCon | |
Foldable SpecialCon | |
Traversable SpecialCon | |
Annotated SpecialCon | |
ExactP SpecialCon | |
Eq l => Eq (SpecialCon l) | |
Data l => Data (SpecialCon l) | |
Ord l => Ord (SpecialCon l) | |
Show l => Show (SpecialCon l) | |
Generic (SpecialCon l) | |
Typeable (* -> *) SpecialCon | |
type Rep (SpecialCon l) |
A name (cname) of a component of a class or data type in an import
or export specification.
An implicit parameter name.
The name of an xml element or attribute, possibly qualified with a namespace.
Template Haskell
A template haskell bracket expression.
ExpBracket l (Exp l) | expression bracket: |
PatBracket l (Pat l) | pattern bracket: |
TypeBracket l (Type l) | type bracket: |
DeclBracket l [Decl l] | declaration bracket: |
Functor Bracket | |
Foldable Bracket | |
Traversable Bracket | |
Annotated Bracket | |
ExactP Bracket | |
AppFixity Bracket | |
Eq l => Eq (Bracket l) | |
Data l => Data (Bracket l) | |
Ord l => Ord (Bracket l) | |
Show l => Show (Bracket l) | |
Generic (Bracket l) | |
SrcInfo loc => Pretty (Bracket loc) | |
Typeable (* -> *) Bracket | |
type Rep (Bracket l) |
A template haskell splice expression
IdSplice l String | variable splice: |
ParenSplice l (Exp l) | parenthesised expression splice: |
FFI
The safety of a foreign function call.
The calling convention of a foreign function call.
Pragmas
data ModulePragma l Source
A top level options pragma, preceding the module header.
LanguagePragma l [Name l] | LANGUAGE pragma |
OptionsPragma l (Maybe Tool) String | OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC |
AnnModulePragma l (Annotation l) | ANN pragma with module scope |
Functor ModulePragma | |
Foldable ModulePragma | |
Traversable ModulePragma | |
Annotated ModulePragma | |
ExactP ModulePragma | |
Eq l => Eq (ModulePragma l) | |
Data l => Data (ModulePragma l) | |
Ord l => Ord (ModulePragma l) | |
Show l => Show (ModulePragma l) | |
Generic (ModulePragma l) | |
SrcInfo loc => Pretty (ModulePragma loc) | |
Typeable (* -> *) ModulePragma | |
type Rep (ModulePragma l) |
Recognised tools for OPTIONS pragmas.
Recognised overlaps for overlap pragmas.
NoOverlap l | NO_OVERLAP pragma |
Overlap l | OVERLAP pragma |
Incoherent l | INCOHERENT pragma |
The body of a RULES pragma.
Variables used in a RULES pragma, optionally annotated with types
RuleVar l (Name l) | |
TypedRuleVar l (Name l) (Type l) |
data Activation l Source
Activation clause of a RULES pragma.
ActiveFrom l Int | |
ActiveUntil l Int |
Functor Activation | |
Foldable Activation | |
Traversable Activation | |
Annotated Activation | |
ExactP Activation | |
Eq l => Eq (Activation l) | |
Data l => Data (Activation l) | |
Ord l => Ord (Activation l) | |
Show l => Show (Activation l) | |
Generic (Activation l) | |
Pretty (Activation l) | |
Typeable (* -> *) Activation | |
type Rep (Activation l) |
data Annotation l Source
An annotation through an ANN pragma.
Ann l (Name l) (Exp l) | An annotation for a declared name. |
TypeAnn l (Name l) (Exp l) | An annotation for a declared type. |
ModuleAnn l (Exp l) | An annotation for the defining module. |
Functor Annotation | |
Foldable Annotation | |
Traversable Annotation | |
Annotated Annotation | |
ExactP Annotation | |
AppFixity Annotation | |
Eq l => Eq (Annotation l) | |
Data l => Data (Annotation l) | |
Ord l => Ord (Annotation l) | |
Show l => Show (Annotation l) | |
Generic (Annotation l) | |
SrcInfo loc => Pretty (Annotation loc) | |
Typeable (* -> *) Annotation | |
type Rep (Annotation l) |
data BooleanFormula l Source
A boolean formula for MINIMAL pragmas.
VarFormula l (Name l) | A variable. |
AndFormula l [BooleanFormula l] | And boolean formulas. |
OrFormula l [BooleanFormula l] | Or boolean formulas. |
ParenFormula l (BooleanFormula l) | Parenthesized boolean formulas. |
Functor BooleanFormula | |
Foldable BooleanFormula | |
Traversable BooleanFormula | |
Annotated BooleanFormula | |
ExactP BooleanFormula | |
Eq l => Eq (BooleanFormula l) | |
Data l => Data (BooleanFormula l) | |
Ord l => Ord (BooleanFormula l) | |
Show l => Show (BooleanFormula l) | |
Generic (BooleanFormula l) | |
Typeable (* -> *) BooleanFormula | |
type Rep (BooleanFormula l) |
Builtin names
Modules
prelude_mod :: l -> ModuleName l Source
main_mod :: l -> ModuleName l Source
Main function of a program
Constructors
unit_con_name :: l -> QName l Source
tuple_con_name :: l -> Boxed -> Int -> QName l Source
list_cons_name :: l -> QName l Source
unboxed_singleton_con_name :: l -> QName l Source
unboxed_singleton_con :: l -> Exp l Source
Special identifiers
qualified_name :: l -> Name l Source
hiding_name :: l -> Name l Source
minus_name :: l -> Name l Source
export_name :: l -> Name l Source
unsafe_name :: l -> Name l Source
interruptible_name :: l -> Name l Source
threadsafe_name :: l -> Name l Source
stdcall_name :: l -> Name l Source
ccall_name :: l -> Name l Source
cplusplus_name :: l -> Name l Source
dotnet_name :: l -> Name l Source
forall_name :: l -> Name l Source
family_name :: l -> Name l Source
Type constructors
unit_tycon_name :: l -> QName l Source
fun_tycon_name :: l -> QName l Source
list_tycon_name :: l -> QName l Source
tuple_tycon_name :: l -> Boxed -> Int -> QName l Source
unboxed_singleton_tycon_name :: l -> QName l Source
unit_tycon :: l -> Type l Source
list_tycon :: l -> Type l Source
tuple_tycon :: l -> Boxed -> Int -> Type l Source
unboxed_singleton_tycon :: l -> Type l Source
Source coordinates
Annotated trees
class Functor ast => Annotated ast where Source
AST nodes are annotated, and this class allows manipulation of the annotations.
Retrieve the annotation of an AST node.
amap :: (l -> l) -> ast l -> ast l Source
Change the annotation of an AST node. Note that only the annotation of
the node itself is affected, and not the annotations of any child nodes.
if all nodes in the AST tree are to be affected, use fmap
.