-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer
--
-- Haskell-Source with Extensions (HSE, haskell-src-exts) is an extension
-- of the standard haskell-src package, and handles most registered
-- syntactic extensions to Haskell, including:
--
--
-- - Multi-parameter type classes with functional dependencies
-- - Indexed type families (including associated types)
-- - Empty data declarations
-- - GADTs
-- - Implicit parameters
-- - Template Haskell
--
--
-- and a few more. All extensions implemented in GHC are supported. Apart
-- from these standard extensions, it also handles regular patterns as
-- per the HaRP extension as well as HSX-style embedded XML syntax.
--
-- For details on usage, please see the website.
@package haskell-src-exts
@version 1.3.2
-- | This module defines various data types representing source location
-- information, of varying degree of preciseness.
module Language.Haskell.Exts.SrcLoc
-- | A single position in the source.
data SrcLoc
SrcLoc :: String -> Int -> Int -> SrcLoc
srcFilename :: SrcLoc -> String
srcLine :: SrcLoc -> Int
srcColumn :: SrcLoc -> Int
-- | A portion of the source, spanning one or more lines and zero or more
-- columns.
data SrcSpan
SrcSpan :: String -> Int -> Int -> Int -> Int -> SrcSpan
srcSpanFilename :: SrcSpan -> String
srcSpanStartLine :: SrcSpan -> Int
srcSpanStartColumn :: SrcSpan -> Int
srcSpanEndLine :: SrcSpan -> Int
srcSpanEndColumn :: SrcSpan -> Int
-- | Returns srcSpanStartLine and srcSpanStartColumn in a
-- pair.
srcSpanStart :: SrcSpan -> (Int, Int)
-- | Returns srcSpanEndLine and srcSpanEndColumn in a pair.
srcSpanEnd :: SrcSpan -> (Int, Int)
-- | Combine two locations in the source to denote a span.
mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
-- | Merge two source spans into a single span from the start of the first
-- to the end of the second. Assumes that the two spans are given in the
-- order they appear in the source.
mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan
-- | Test if a given span starts and ends at the same location.
isNullSpan :: SrcSpan -> Bool
-- | An entity located in the source.
data Loc a
Loc :: SrcSpan -> a -> Loc a
loc :: Loc a -> SrcSpan
unLoc :: Loc a -> a
-- | A portion of the source, extended with information on the position of
-- entities within the span.
data SrcSpanInfo
SrcSpanInfo :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
srcInfoSpan :: SrcSpanInfo -> SrcSpan
srcInfoPoints :: SrcSpanInfo -> [SrcSpan]
noInfoSpan :: SrcSpan -> SrcSpanInfo
infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo
(+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo
(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo
class SrcInfo si
toSrcInfo :: (SrcInfo si) => SrcLoc -> [SrcSpan] -> SrcLoc -> si
fromSrcInfo :: (SrcInfo si) => SrcSpanInfo -> si
getPointLoc :: (SrcInfo si) => si -> SrcLoc
fileName :: (SrcInfo si) => si -> String
startLine :: (SrcInfo si) => si -> Int
startColumn :: (SrcInfo si) => si -> Int
instance Typeable SrcSpanInfo
instance Typeable SrcSpan
instance Typeable SrcLoc
instance Eq SrcSpanInfo
instance Ord SrcSpanInfo
instance Show SrcSpanInfo
instance Data SrcSpanInfo
instance (Eq a) => Eq (Loc a)
instance (Ord a) => Ord (Loc a)
instance (Show a) => Show (Loc a)
instance Eq SrcSpan
instance Ord SrcSpan
instance Show SrcSpan
instance Data SrcSpan
instance Eq SrcLoc
instance Ord SrcLoc
instance Show SrcLoc
instance Data SrcLoc
instance SrcInfo SrcSpanInfo
instance SrcInfo SrcSpan
instance SrcInfo SrcLoc
-- | 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.
module Language.Haskell.Exts.Annotated.Syntax
-- | A complete Haskell source module.
data Module l
-- | an ordinary Haskell module
Module :: l -> (Maybe (ModuleHead l)) -> [OptionPragma l] -> [ImportDecl l] -> [Decl l] -> Module 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.
XmlPage :: l -> (ModuleName l) -> [OptionPragma l] -> (XName l) -> [XAttr l] -> (Maybe (Exp l)) -> [Exp l] -> Module l
-- | a hybrid module combining an XML document with an ordinary module
XmlHybrid :: l -> (Maybe (ModuleHead l)) -> [OptionPragma l] -> [ImportDecl l] -> [Decl l] -> (XName l) -> [XAttr l] -> (Maybe (Exp l)) -> [Exp l] -> Module l
-- | The head of a module, including the name and export specification.
data ModuleHead l
ModuleHead :: l -> (ModuleName l) -> (Maybe (WarningText l)) -> (Maybe (ExportSpecList l)) -> ModuleHead l
-- | Warning text to optionally use in the module header of e.g. a
-- deprecated module.
data WarningText l
DeprText :: l -> String -> WarningText l
WarnText :: l -> String -> WarningText l
-- | An explicit export specification.
data ExportSpecList l
ExportSpecList :: l -> [ExportSpec l] -> ExportSpecList l
-- | An item in a module's export specification.
data ExportSpec l
-- | variable
EVar :: l -> (QName l) -> ExportSpec l
-- | T: a class or datatype exported abstractly, or a type
-- synonym.
EAbs :: l -> (QName l) -> ExportSpec l
-- | T(..): a class exported with all of its methods, or a
-- datatype exported with all of its constructors.
EThingAll :: l -> (QName l) -> ExportSpec l
-- | T(C_1,...,C_n): a class exported with some of its methods, or
-- a datatype exported with some of its constructors.
EThingWith :: l -> (QName l) -> [CName l] -> ExportSpec l
-- | module M: re-export a module.
EModuleContents :: l -> (ModuleName l) -> ExportSpec l
-- | An import declaration.
data ImportDecl l
ImportDecl :: l -> (ModuleName l) -> Bool -> Bool -> Maybe String -> Maybe (ModuleName l) -> Maybe (ImportSpecList l) -> ImportDecl l
-- | annotation, used by parser for position of the import
-- keyword.
importAnn :: ImportDecl l -> l
-- | name of the module imported.
importModule :: ImportDecl l -> (ModuleName l)
-- | imported qualified?
importQualified :: ImportDecl l -> Bool
-- | imported with {-# SOURCE #-}?
importSrc :: ImportDecl l -> Bool
-- | imported with explicit package name
importPkg :: ImportDecl l -> Maybe String
-- | optional alias name in an as clause.
importAs :: ImportDecl l -> Maybe (ModuleName l)
-- | optional list of import specifications.
importSpecs :: ImportDecl l -> Maybe (ImportSpecList l)
-- | An explicit import specification list.
data ImportSpecList l
ImportSpecList :: l -> Bool -> [ImportSpec l] -> ImportSpecList l
-- | An import specification, representing a single explicit item imported
-- (or hidden) from a module.
data ImportSpec l
-- | variable
IVar :: l -> (Name l) -> ImportSpec l
-- | T: the name of a class, datatype or type synonym.
IAbs :: l -> (Name l) -> ImportSpec l
-- | T(..): a class imported with all of its methods, or a
-- datatype imported with all of its constructors.
IThingAll :: l -> (Name l) -> ImportSpec l
-- | T(C_1,...,C_n): a class imported with some of its methods, or
-- a datatype imported with some of its constructors.
IThingWith :: l -> (Name l) -> [CName l] -> ImportSpec l
-- | Associativity of an operator.
data Assoc l
-- | non-associative operator (declared with infix)
AssocNone :: l -> Assoc l
-- | left-associative operator (declared with infixl).
AssocLeft :: l -> Assoc l
-- | right-associative operator (declared with infixr)
AssocRight :: l -> Assoc l
-- | A top-level declaration.
data Decl l
-- | A type declaration
TypeDecl :: l -> (DeclHead l) -> (Type l) -> Decl l
-- | A type family declaration
TypeFamDecl :: l -> (DeclHead l) -> (Maybe (Kind l)) -> Decl l
-- | A data OR newtype declaration
DataDecl :: l -> (DataOrNew l) -> (Maybe (Context l)) -> (DeclHead l) -> [QualConDecl l] -> (Maybe (Deriving l)) -> Decl l
-- | A data OR newtype declaration, GADT style
GDataDecl :: l -> (DataOrNew l) -> (Maybe (Context l)) -> (DeclHead l) -> (Maybe (Kind l)) -> [GadtDecl l] -> (Maybe (Deriving l)) -> Decl l
-- | A data family declaration
DataFamDecl :: l -> (Maybe (Context l)) -> (DeclHead l) -> (Maybe (Kind l)) -> Decl l
-- | A type family instance declaration
TypeInsDecl :: l -> (Type l) -> (Type l) -> Decl l
-- | A data family instance declaration
DataInsDecl :: l -> (DataOrNew l) -> (Type l) -> [QualConDecl l] -> (Maybe (Deriving l)) -> Decl l
-- | A data family instance declaration, GADT style
GDataInsDecl :: l -> (DataOrNew l) -> (Type l) -> (Maybe (Kind l)) -> [GadtDecl l] -> (Maybe (Deriving l)) -> Decl l
-- | A declaration of a type class
ClassDecl :: l -> (Maybe (Context l)) -> (DeclHead l) -> [FunDep l] -> (Maybe [ClassDecl l]) -> Decl l
-- | An declaration of a type class instance
InstDecl :: l -> (Maybe (Context l)) -> (InstHead l) -> (Maybe [InstDecl l]) -> Decl l
-- | A standalone deriving declaration
DerivDecl :: l -> (Maybe (Context l)) -> (InstHead l) -> Decl l
-- | A declaration of operator fixity
InfixDecl :: l -> (Assoc l) -> (Maybe Int) -> [Op l] -> Decl l
-- | A declaration of default types
DefaultDecl :: l -> [Type l] -> Decl l
-- | A Template Haskell splicing declaration
SpliceDecl :: l -> (Exp l) -> Decl l
-- | A type signature declaration
TypeSig :: l -> [Name l] -> (Type l) -> Decl l
-- | A set of function binding clauses
FunBind :: l -> [Match l] -> Decl l
-- | A pattern binding
PatBind :: l -> (Pat l) -> (Maybe (Type l)) -> (Rhs l) -> (Maybe (Binds l)) -> Decl l
-- | A foreign import declaration
ForImp :: l -> (CallConv l) -> (Maybe (Safety l)) -> (Maybe String) -> (Name l) -> (Type l) -> Decl l
-- | A foreign export declaration
ForExp :: l -> (CallConv l) -> (Maybe String) -> (Name l) -> (Type l) -> Decl l
-- | A RULES pragma
RulePragmaDecl :: l -> [Rule l] -> Decl l
-- | A DEPRECATED pragma
DeprPragmaDecl :: l -> [([Name l], String)] -> Decl l
-- | A WARNING pragma
WarnPragmaDecl :: l -> [([Name l], String)] -> Decl l
-- | An INLINE pragma
InlineSig :: l -> Bool -> (Maybe (Activation l)) -> (QName l) -> Decl l
-- | A SPECIALISE pragma
SpecSig :: l -> (QName l) -> [Type l] -> Decl l
-- | A SPECIALISE INLINE pragma
SpecInlineSig :: l -> Bool -> (Maybe (Activation l)) -> (QName l) -> [Type l] -> Decl l
-- | A SPECIALISE instance pragma
InstSig :: l -> (Maybe (Context l)) -> (InstHead l) -> Decl l
-- | The head of a type or class declaration.
data DeclHead l
DHead :: l -> (Name l) -> [TyVarBind l] -> DeclHead l
DHInfix :: l -> (TyVarBind l) -> (Name l) -> (TyVarBind l) -> DeclHead l
DHParen :: l -> (DeclHead l) -> DeclHead l
-- | The head of an instance declaration.
data InstHead l
IHead :: l -> (QName l) -> [Type l] -> InstHead l
IHInfix :: l -> (Type l) -> (QName l) -> (Type l) -> InstHead l
IHParen :: l -> (InstHead l) -> InstHead l
-- | A binding group inside a let or where clause.
data Binds l
-- | An ordinary binding group
BDecls :: l -> [Decl l] -> Binds l
-- | A binding group for implicit parameters
IPBinds :: l -> [IPBind l] -> Binds l
-- | A binding of an implicit parameter.
data IPBind l
IPBind :: l -> (IPName l) -> (Exp l) -> IPBind l
-- | Declarations inside a class declaration.
data ClassDecl l
-- | ordinary declaration
ClsDecl :: l -> (Decl l) -> ClassDecl l
-- | declaration of an associated data type
ClsDataFam :: l -> (Maybe (Context l)) -> (DeclHead l) -> (Maybe (Kind l)) -> ClassDecl l
-- | declaration of an associated type synonym
ClsTyFam :: l -> (DeclHead l) -> (Maybe (Kind l)) -> ClassDecl l
-- | default choice for an associated type synonym
ClsTyDef :: l -> (Type l) -> (Type l) -> ClassDecl l
-- | Declarations inside an instance declaration.
data InstDecl l
-- | ordinary declaration
InsDecl :: l -> (Decl l) -> InstDecl l
-- | an associated type definition
InsType :: l -> (Type l) -> (Type l) -> InstDecl l
-- | an associated data type implementation
InsData :: l -> (DataOrNew l) -> (Type l) -> [QualConDecl l] -> (Maybe (Deriving l)) -> InstDecl l
-- | an associated data type implemented using GADT style
InsGData :: l -> (DataOrNew l) -> (Type l) -> (Maybe (Kind l)) -> [GadtDecl l] -> (Maybe (Deriving l)) -> InstDecl l
-- | an INLINE pragma
InsInline :: l -> Bool -> (Maybe (Activation l)) -> (QName l) -> InstDecl l
-- | A deriving clause following a data type declaration.
data Deriving l
Deriving :: l -> [InstHead l] -> Deriving l
-- | A flag stating whether a declaration is a data or newtype declaration.
data DataOrNew l
DataType :: l -> DataOrNew l
NewType :: l -> DataOrNew l
-- | Declaration of an ordinary data constructor.
data ConDecl l
-- | ordinary data constructor
ConDecl :: l -> (Name l) -> [BangType l] -> ConDecl l
-- | infix data constructor
InfixConDecl :: l -> (BangType l) -> (Name l) -> (BangType l) -> ConDecl l
-- | record constructor
RecDecl :: l -> (Name l) -> [FieldDecl l] -> ConDecl l
-- | Declaration of a (list of) named field(s).
data FieldDecl l
FieldDecl :: l -> [Name l] -> (BangType l) -> FieldDecl l
-- | A single constructor declaration within a data type declaration, which
-- may have an existential quantification binding.
data QualConDecl l
QualConDecl :: l -> (Maybe [TyVarBind l]) -> (Maybe (Context l)) -> (ConDecl l) -> QualConDecl l
-- | A single constructor declaration in a GADT data type declaration.
data GadtDecl l
GadtDecl :: l -> (Name l) -> (Type l) -> GadtDecl l
-- | The type of a constructor argument or field, optionally including a
-- strictness annotation.
data BangType l
-- | strict component, marked with "!"
BangedTy :: l -> (Type l) -> BangType l
-- | non-strict component
UnBangedTy :: l -> (Type l) -> BangType l
-- | unboxed component, marked with an UNPACK pragma
UnpackedTy :: l -> (Type l) -> BangType l
-- | Clauses of a function binding.
data Match l
Match :: l -> (Name l) -> [Pat l] -> (Rhs l) -> (Maybe (Binds l)) -> Match l
InfixMatch :: l -> (Pat l) -> (Name l) -> (Pat l) -> (Rhs l) -> (Maybe (Binds l)) -> Match l
-- | The right hand side of a function or pattern binding.
data Rhs l
-- | unguarded right hand side (exp)
UnGuardedRhs :: l -> (Exp l) -> Rhs l
-- | guarded right hand side (gdrhs)
GuardedRhss :: l -> [GuardedRhs l] -> Rhs l
-- | A guarded right hand side | stmts =
-- exp. The guard is a series of statements when using pattern
-- guards, otherwise it will be a single qualifier expression.
data GuardedRhs l
GuardedRhs :: l -> [Stmt l] -> (Exp l) -> GuardedRhs l
-- | A context is a set of assertions
data Context l
CxSingle :: l -> (Asst l) -> Context l
CxTuple :: l -> [Asst l] -> Context l
CxParen :: l -> (Context l) -> Context l
CxEmpty :: l -> Context l
-- | A functional dependency, given on the form l1 l2 ... ln -> r2 r3 ..
-- rn
data FunDep l
FunDep :: l -> [Name l] -> [Name l] -> FunDep l
-- | 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.
data Asst l
-- | ordinary class assertion
ClassA :: l -> (QName l) -> [Type l] -> Asst l
-- | class assertion where the class name is given infix
InfixA :: l -> (Type l) -> (QName l) -> (Type l) -> Asst l
-- | implicit parameter assertion
IParam :: l -> (IPName l) -> (Type l) -> Asst l
-- | type equality constraint
EqualP :: l -> (Type l) -> (Type l) -> Asst l
-- | A type qualified with a context. An unqualified type has an empty
-- context.
data Type l
-- | qualified type
TyForall :: l -> (Maybe [TyVarBind l]) -> (Maybe (Context l)) -> (Type l) -> Type l
-- | function type
TyFun :: l -> (Type l) -> (Type l) -> Type l
-- | tuple type, possibly boxed
TyTuple :: l -> Boxed -> [Type l] -> Type l
-- | list syntax, e.g. [a], as opposed to [] a
TyList :: l -> (Type l) -> Type l
-- | application of a type constructor
TyApp :: l -> (Type l) -> (Type l) -> Type l
-- | type variable
TyVar :: l -> (Name l) -> Type l
-- | named type or type constructor
TyCon :: l -> (QName l) -> Type l
-- | type surrounded by parentheses
TyParen :: l -> (Type l) -> Type l
-- | infix type constructor
TyInfix :: l -> (Type l) -> (QName l) -> (Type l) -> Type l
-- | type with explicit kind signature
TyKind :: l -> (Type l) -> (Kind l) -> Type l
-- | Flag denoting whether a tuple is boxed or unboxed.
data Boxed
Boxed :: Boxed
Unboxed :: Boxed
-- | An explicit kind annotation.
data Kind l
-- | *, the kind of types
KindStar :: l -> Kind l
-- | !, the kind of unboxed types
KindBang :: l -> Kind l
-- | ->, the kind of a type constructor
KindFn :: l -> (Kind l) -> (Kind l) -> Kind l
-- | a parenthesised kind
KindParen :: l -> (Kind l) -> Kind l
-- | a kind variable (as-of-yet unsupported by compilers)
KindVar :: l -> (Name l) -> Kind l
-- | A type variable declaration, optionally with an explicit kind
-- annotation.
data TyVarBind l
-- | variable binding with kind annotation
KindedVar :: l -> (Name l) -> (Kind l) -> TyVarBind l
-- | ordinary variable binding
UnkindedVar :: l -> (Name l) -> TyVarBind l
-- | Haskell expressions.
data Exp l
-- | variable
Var :: l -> (QName l) -> Exp l
-- | implicit parameter variable
IPVar :: l -> (IPName l) -> Exp l
-- | data constructor
Con :: l -> (QName l) -> Exp l
-- | literal constant
Lit :: l -> (Literal l) -> Exp l
-- | infix application
InfixApp :: l -> (Exp l) -> (QOp l) -> (Exp l) -> Exp l
-- | ordinary application
App :: l -> (Exp l) -> (Exp l) -> Exp l
-- | negation expression -exp (unary minus)
NegApp :: l -> (Exp l) -> Exp l
-- | lambda expression
Lambda :: l -> [Pat l] -> (Exp l) -> Exp l
-- | local declarations with let ... in ...
Let :: l -> (Binds l) -> (Exp l) -> Exp l
-- | if exp then exp else
-- exp
If :: l -> (Exp l) -> (Exp l) -> (Exp l) -> Exp l
-- | case exp of alts
Case :: l -> (Exp l) -> [Alt l] -> Exp l
-- | do-expression: the last statement in the list should be an
-- expression.
Do :: l -> [Stmt l] -> Exp l
-- | mdo-expression
MDo :: l -> [Stmt l] -> Exp l
-- | tuple expression
Tuple :: l -> [Exp l] -> Exp l
-- | tuple section expression, e.g. (,,3)
TupleSection :: l -> [Maybe (Exp l)] -> Exp l
-- | list expression
List :: l -> [Exp l] -> Exp l
-- | parenthesised expression
Paren :: l -> (Exp l) -> Exp l
-- | left section (exp qop)
LeftSection :: l -> (Exp l) -> (QOp l) -> Exp l
-- | right section (qop exp)
RightSection :: l -> (QOp l) -> (Exp l) -> Exp l
-- | record construction expression
RecConstr :: l -> (QName l) -> [FieldUpdate l] -> Exp l
-- | record update expression
RecUpdate :: l -> (Exp l) -> [FieldUpdate l] -> Exp l
-- | unbounded arithmetic sequence, incrementing by 1: [from ..]
EnumFrom :: l -> (Exp l) -> Exp l
-- | bounded arithmetic sequence, incrementing by 1 [from .. to]
EnumFromTo :: l -> (Exp l) -> (Exp l) -> Exp l
-- | unbounded arithmetic sequence, with first two elements given
-- [from, then ..]
EnumFromThen :: l -> (Exp l) -> (Exp l) -> Exp l
-- | bounded arithmetic sequence, with first two elements given [from,
-- then .. to]
EnumFromThenTo :: l -> (Exp l) -> (Exp l) -> (Exp l) -> Exp l
-- | ordinary list comprehension
ListComp :: l -> (Exp l) -> [QualStmt l] -> Exp l
-- | parallel list comprehension
ParComp :: l -> (Exp l) -> [[QualStmt l]] -> Exp l
-- | expression with explicit type signature
ExpTypeSig :: l -> (Exp l) -> (Type l) -> Exp l
-- | 'x for template haskell reifying of expressions
VarQuote :: l -> (QName l) -> Exp l
-- | ''T for template haskell reifying of types
TypQuote :: l -> (QName l) -> Exp l
-- | template haskell bracket expression
BracketExp :: l -> (Bracket l) -> Exp l
-- | template haskell splice expression
SpliceExp :: l -> (Splice l) -> Exp l
-- | quasi-quotaion: [$name| string |]
QuasiQuote :: l -> String -> String -> Exp l
-- | xml element, with attributes and children
XTag :: l -> (XName l) -> [XAttr l] -> (Maybe (Exp l)) -> [Exp l] -> Exp l
-- | empty xml element, with attributes
XETag :: l -> (XName l) -> [XAttr l] -> (Maybe (Exp l)) -> Exp l
-- | PCDATA child element
XPcdata :: l -> String -> Exp l
-- | escaped haskell expression inside xml
XExpTag :: l -> (Exp l) -> Exp l
-- | CORE pragma
CorePragma :: l -> String -> (Exp l) -> Exp l
-- | SCC pragma
SCCPragma :: l -> String -> (Exp l) -> Exp l
-- | GENERATED pragma
GenPragma :: l -> String -> (Int, Int) -> (Int, Int) -> (Exp l) -> Exp l
-- | arrows proc: proc pat -> exp
Proc :: l -> (Pat l) -> (Exp l) -> Exp l
-- | arrow application (from left): exp -< exp
LeftArrApp :: l -> (Exp l) -> (Exp l) -> Exp l
-- | arrow application (from right): exp >- exp
RightArrApp :: l -> (Exp l) -> (Exp l) -> Exp l
-- | higher-order arrow application (from left): exp
-- -<< exp
LeftArrHighApp :: l -> (Exp l) -> (Exp l) -> Exp l
-- | higher-order arrow application (from right): exp
-- >>- exp
RightArrHighApp :: l -> (Exp l) -> (Exp l) -> Exp 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.
data Stmt l
-- | a generator: pat <- exp
Generator :: l -> (Pat l) -> (Exp l) -> Stmt l
-- | an exp by itself: in a do-expression, an action whose
-- result is discarded; in a list comprehension and pattern guard, a
-- guard expression
Qualifier :: l -> (Exp l) -> Stmt l
-- | local bindings
LetStmt :: l -> (Binds l) -> Stmt l
-- | a recursive binding group for arrows
RecStmt :: l -> [Stmt l] -> Stmt l
-- | A general transqual in a list comprehension, which could
-- potentially be a transform of the kind enabled by TransformListComp.
data QualStmt l
-- | an ordinary statement
QualStmt :: l -> (Stmt l) -> QualStmt l
-- | then exp
ThenTrans :: l -> (Exp l) -> QualStmt l
-- | then exp by exp
ThenBy :: l -> (Exp l) -> (Exp l) -> QualStmt l
-- | then group by exp
GroupBy :: l -> (Exp l) -> QualStmt l
-- | then group using exp
GroupUsing :: l -> (Exp l) -> QualStmt l
-- | then group by exp using
-- exp
GroupByUsing :: l -> (Exp l) -> (Exp l) -> QualStmt l
-- | An fbind in a labeled construction or update expression.
data FieldUpdate l
-- | ordinary label-expresion pair
FieldUpdate :: l -> (QName l) -> (Exp l) -> FieldUpdate l
-- | record field pun
FieldPun :: l -> (Name l) -> FieldUpdate l
-- | record field wildcard
FieldWildcard :: l -> FieldUpdate l
-- | An alt alternative in a case expression.
data Alt l
Alt :: l -> (Pat l) -> (GuardedAlts l) -> (Maybe (Binds l)) -> Alt l
-- | The right-hand sides of a case alternative, which may be a
-- single right-hand side or a set of guarded ones.
data GuardedAlts l
-- | -> exp
UnGuardedAlt :: l -> (Exp l) -> GuardedAlts l
-- | gdpat
GuardedAlts :: l -> [GuardedAlt l] -> GuardedAlts l
-- | A guarded case alternative | stmts ->
-- exp.
data GuardedAlt l
GuardedAlt :: l -> [Stmt l] -> (Exp l) -> GuardedAlt l
-- | An xml attribute, which is a name-expression pair.
data XAttr l
XAttr :: l -> (XName l) -> (Exp l) -> XAttr l
-- | A pattern, to be matched against a value.
data Pat l
-- | variable
PVar :: l -> (Name l) -> Pat l
-- | literal constant
PLit :: l -> (Literal l) -> Pat l
-- | negated pattern
PNeg :: l -> (Pat l) -> Pat l
-- | n+k pattern
PNPlusK :: l -> (Name l) -> Integer -> Pat l
-- | pattern with an infix data constructor
PInfixApp :: l -> (Pat l) -> (QName l) -> (Pat l) -> Pat l
-- | data constructor and argument patterns
PApp :: l -> (QName l) -> [Pat l] -> Pat l
-- | tuple pattern
PTuple :: l -> [Pat l] -> Pat l
-- | list pattern
PList :: l -> [Pat l] -> Pat l
-- | parenthesized pattern
PParen :: l -> (Pat l) -> Pat l
-- | labelled pattern, record style
PRec :: l -> (QName l) -> [PatField l] -> Pat l
-- | @-pattern
PAsPat :: l -> (Name l) -> (Pat l) -> Pat l
-- | wildcard pattern: _
PWildCard :: l -> Pat l
-- | irrefutable pattern: ~pat
PIrrPat :: l -> (Pat l) -> Pat l
-- | pattern with type signature
PatTypeSig :: l -> (Pat l) -> (Type l) -> Pat l
-- | view patterns of the form (exp -> pat)
PViewPat :: l -> (Exp l) -> (Pat l) -> Pat l
-- | regular list pattern
PRPat :: l -> [RPat l] -> Pat l
-- | XML element pattern
PXTag :: l -> (XName l) -> [PXAttr l] -> (Maybe (Pat l)) -> [Pat l] -> Pat l
-- | XML singleton element pattern
PXETag :: l -> (XName l) -> [PXAttr l] -> (Maybe (Pat l)) -> Pat l
-- | XML PCDATA pattern
PXPcdata :: l -> String -> Pat l
-- | XML embedded pattern
PXPatTag :: l -> (Pat l) -> Pat l
-- | XML regular list pattern
PXRPats :: l -> [RPat l] -> Pat l
-- | Explicit generics style type argument e.g. f {| Int |} x =
-- ...
PExplTypeArg :: l -> (QName l) -> (Type l) -> Pat l
-- | quasi quote pattern: [$name| string |]
PQuasiQuote :: l -> String -> String -> Pat l
-- | strict (bang) pattern: f !x = ...
PBangPat :: l -> (Pat l) -> Pat l
-- | An fpat in a labeled record pattern.
data PatField l
-- | ordinary label-pattern pair
PFieldPat :: l -> (QName l) -> (Pat l) -> PatField l
-- | record field pun
PFieldPun :: l -> (Name l) -> PatField l
-- | record field wildcard
PFieldWildcard :: l -> PatField l
-- | An XML attribute in a pattern.
data PXAttr l
PXAttr :: l -> (XName l) -> (Pat l) -> PXAttr l
-- | An entity in a regular pattern.
data RPat l
RPOp :: l -> (RPat l) -> (RPatOp l) -> RPat l
RPEither :: l -> (RPat l) -> (RPat l) -> RPat l
RPSeq :: l -> [RPat l] -> RPat l
RPGuard :: l -> (Pat l) -> [Stmt l] -> RPat l
RPCAs :: l -> (Name l) -> (RPat l) -> RPat l
RPAs :: l -> (Name l) -> (RPat l) -> RPat l
RPParen :: l -> (RPat l) -> RPat l
RPPat :: l -> (Pat l) -> RPat l
-- | A regular pattern operator.
data RPatOp l
-- | * = 0 or more
RPStar :: l -> RPatOp l
-- | *! = 0 or more, greedy
RPStarG :: l -> RPatOp l
-- | + = 1 or more
RPPlus :: l -> RPatOp l
-- | +! = 1 or more, greedy
RPPlusG :: l -> RPatOp l
-- | ? = 0 or 1
RPOpt :: l -> RPatOp l
-- | ?! = 0 or 1, greedy
RPOptG :: l -> RPatOp l
-- | literal Values of this type hold the abstract value of the
-- literal, not the precise string representation used. For example,
-- 10, 0o12 and 0xa have the same
-- representation.
data Literal l
-- | character literal
Char :: l -> Char -> String -> Literal l
-- | string literal
String :: l -> String -> String -> Literal l
-- | integer literal
Int :: l -> Integer -> String -> Literal l
-- | floating point literal
Frac :: l -> Rational -> String -> Literal l
-- | unboxed integer literal
PrimInt :: l -> Integer -> String -> Literal l
-- | unboxed word literal
PrimWord :: l -> Integer -> String -> Literal l
-- | unboxed float literal
PrimFloat :: l -> Rational -> String -> Literal l
-- | unboxed double literal
PrimDouble :: l -> Rational -> String -> Literal l
-- | unboxed character literal
PrimChar :: l -> Char -> String -> Literal l
-- | unboxed string literal
PrimString :: l -> String -> String -> Literal l
-- | The name of a Haskell module.
data ModuleName l
ModuleName :: l -> String -> ModuleName l
-- | This type is used to represent qualified variables, and also qualified
-- constructors.
data QName l
-- | name qualified with a module name
Qual :: l -> (ModuleName l) -> (Name l) -> QName l
-- | unqualified local name
UnQual :: l -> (Name l) -> QName l
-- | built-in constructor with special syntax
Special :: l -> (SpecialCon l) -> QName l
-- | This type is used to represent variables, and also constructors.
data Name l
-- | varid or conid.
Ident :: l -> String -> Name l
-- | varsym or consym
Symbol :: l -> String -> Name l
-- | Possibly qualified infix operators (qop), appearing in
-- expressions.
data QOp l
-- | variable operator (qvarop)
QVarOp :: l -> (QName l) -> QOp l
-- | constructor operator (qconop)
QConOp :: l -> (QName l) -> QOp l
-- | Operators appearing in infix declarations are never
-- qualified.
data Op l
-- | variable operator (varop)
VarOp :: l -> (Name l) -> Op l
-- | constructor operator (conop)
ConOp :: l -> (Name l) -> Op l
-- | Constructors with special syntax. These names are never qualified, and
-- always refer to builtin type or data constructors.
data SpecialCon l
-- | unit type and data constructor ()
UnitCon :: l -> SpecialCon l
-- | list type constructor []
ListCon :: l -> SpecialCon l
-- | function type constructor ->
FunCon :: l -> SpecialCon l
-- | n-ary tuple type and data constructors (,) etc,
-- possibly boxed (#,#)
TupleCon :: l -> Boxed -> Int -> SpecialCon l
-- | list data constructor (:)
Cons :: l -> SpecialCon l
-- | unboxed singleton tuple constructor (# #)
UnboxedSingleCon :: l -> SpecialCon l
-- | A name (cname) of a component of a class or data type in an
-- import or export specification.
data CName l
-- | name of a method or field
VarName :: l -> (Name l) -> CName l
-- | name of a data constructor
ConName :: l -> (Name l) -> CName l
-- | An implicit parameter name.
data IPName l
-- | ?ident, non-linear implicit parameter
IPDup :: l -> String -> IPName l
-- | %ident, linear implicit parameter
IPLin :: l -> String -> IPName l
-- | The name of an xml element or attribute, possibly qualified with a
-- namespace.
data XName l
XName :: l -> String -> XName l
XDomName :: l -> String -> String -> XName l
-- | A template haskell bracket expression.
data Bracket l
-- | expression bracket: [| ... |]
ExpBracket :: l -> (Exp l) -> Bracket l
-- | pattern bracket: [p| ... |]
PatBracket :: l -> (Pat l) -> Bracket l
-- | type bracket: [t| ... |]
TypeBracket :: l -> (Type l) -> Bracket l
-- | declaration bracket: [d| ... |]
DeclBracket :: l -> [Decl l] -> Bracket l
-- | A template haskell splice expression
data Splice l
-- | variable splice: $var
IdSplice :: l -> String -> Splice l
-- | parenthesised expression splice: $(exp)
ParenSplice :: l -> (Exp l) -> Splice l
-- | The safety of a foreign function call.
data Safety l
-- | unsafe
PlayRisky :: l -> Safety l
-- | safe (False) or threadsafe (True)
PlaySafe :: l -> Bool -> Safety l
-- | The calling convention of a foreign function call.
data CallConv l
StdCall :: l -> CallConv l
CCall :: l -> CallConv l
-- | A top level options pragma, preceding the module header.
data OptionPragma l
-- | LANGUAGE pragma
LanguagePragma :: l -> [Name l] -> OptionPragma l
-- | INCLUDE pragma
IncludePragma :: l -> String -> OptionPragma l
-- | CFILES pragma
CFilesPragma :: l -> String -> OptionPragma l
-- | OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC
OptionsPragma :: l -> (Maybe Tool) -> String -> OptionPragma l
-- | Recognised tools for OPTIONS pragmas.
data Tool
GHC :: Tool
HUGS :: Tool
NHC98 :: Tool
YHC :: Tool
HADDOCK :: Tool
UnknownTool :: String -> Tool
-- | The body of a RULES pragma.
data Rule l
Rule :: l -> String -> (Maybe (Activation l)) -> (Maybe [RuleVar l]) -> (Exp l) -> (Exp l) -> Rule l
-- | Variables used in a RULES pragma, optionally annotated with types
data RuleVar l
RuleVar :: l -> (Name l) -> RuleVar l
TypedRuleVar :: l -> (Name l) -> (Type l) -> RuleVar l
-- | Activation clause of a RULES pragma.
data Activation l
ActiveFrom :: l -> Int -> Activation l
ActiveUntil :: l -> Int -> Activation 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
threadsafe_name :: l -> Name l
stdcall_name :: l -> Name l
ccall_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
-- | AST nodes are annotated, and this class allows manipulation of the
-- annotations.
class (Functor ast) => Annotated ast
ann :: (Annotated ast) => ast l -> l
amap :: (Annotated ast) => (l -> l) -> ast l -> ast l
-- | Test if two AST elements are equal modulo annotations.
(=~=) :: (Functor a, Eq (a ())) => a l1 -> a l2 -> Bool
instance Typeable1 GuardedAlt
instance Typeable1 GuardedAlts
instance Typeable1 Alt
instance Typeable1 FieldUpdate
instance Typeable1 QualStmt
instance Typeable1 Stmt
instance Typeable1 PatField
instance Typeable1 RPat
instance Typeable1 RPatOp
instance Typeable1 PXAttr
instance Typeable1 Pat
instance Typeable1 WarningText
instance Typeable1 RuleVar
instance Typeable1 Rule
instance Typeable1 Activation
instance Typeable Tool
instance Typeable1 OptionPragma
instance Typeable1 CallConv
instance Typeable1 Safety
instance Typeable1 Splice
instance Typeable1 Bracket
instance Typeable1 XAttr
instance Typeable1 XName
instance Typeable1 Exp
instance Typeable1 Literal
instance Typeable1 Asst
instance Typeable1 Context
instance Typeable1 FunDep
instance Typeable1 Kind
instance Typeable1 TyVarBind
instance Typeable Boxed
instance Typeable1 Type
instance Typeable1 GuardedRhs
instance Typeable1 Rhs
instance Typeable1 BangType
instance Typeable1 InstDecl
instance Typeable1 ClassDecl
instance Typeable1 GadtDecl
instance Typeable1 FieldDecl
instance Typeable1 ConDecl
instance Typeable1 QualConDecl
instance Typeable1 Match
instance Typeable1 IPBind
instance Typeable1 Binds
instance Typeable1 Deriving
instance Typeable1 InstHead
instance Typeable1 DeclHead
instance Typeable1 DataOrNew
instance Typeable1 Decl
instance Typeable1 Assoc
instance Typeable1 ImportSpec
instance Typeable1 ImportSpecList
instance Typeable1 ImportDecl
instance Typeable1 ExportSpec
instance Typeable1 ExportSpecList
instance Typeable1 ModuleHead
instance Typeable1 Module
instance Typeable1 CName
instance Typeable1 Op
instance Typeable1 QOp
instance Typeable1 IPName
instance Typeable1 Name
instance Typeable1 QName
instance Typeable1 SpecialCon
instance Typeable1 ModuleName
instance (Eq l) => Eq (GuardedAlt l)
instance (Ord l) => Ord (GuardedAlt l)
instance (Show l) => Show (GuardedAlt l)
instance (Data l) => Data (GuardedAlt l)
instance (Eq l) => Eq (GuardedAlts l)
instance (Ord l) => Ord (GuardedAlts l)
instance (Show l) => Show (GuardedAlts l)
instance (Data l) => Data (GuardedAlts l)
instance (Eq l) => Eq (Alt l)
instance (Ord l) => Ord (Alt l)
instance (Show l) => Show (Alt l)
instance (Data l) => Data (Alt l)
instance (Eq l) => Eq (FieldUpdate l)
instance (Ord l) => Ord (FieldUpdate l)
instance (Show l) => Show (FieldUpdate l)
instance (Data l) => Data (FieldUpdate l)
instance (Eq l) => Eq (QualStmt l)
instance (Ord l) => Ord (QualStmt l)
instance (Show l) => Show (QualStmt l)
instance (Data l) => Data (QualStmt l)
instance (Eq l) => Eq (Stmt l)
instance (Ord l) => Ord (Stmt l)
instance (Show l) => Show (Stmt l)
instance (Data l) => Data (Stmt l)
instance (Eq l) => Eq (PatField l)
instance (Ord l) => Ord (PatField l)
instance (Show l) => Show (PatField l)
instance (Data l) => Data (PatField l)
instance (Eq l) => Eq (RPat l)
instance (Ord l) => Ord (RPat l)
instance (Show l) => Show (RPat l)
instance (Data l) => Data (RPat l)
instance (Eq l) => Eq (RPatOp l)
instance (Ord l) => Ord (RPatOp l)
instance (Show l) => Show (RPatOp l)
instance (Data l) => Data (RPatOp l)
instance (Eq l) => Eq (PXAttr l)
instance (Ord l) => Ord (PXAttr l)
instance (Show l) => Show (PXAttr l)
instance (Data l) => Data (PXAttr l)
instance (Eq l) => Eq (Pat l)
instance (Ord l) => Ord (Pat l)
instance (Show l) => Show (Pat l)
instance (Data l) => Data (Pat l)
instance (Eq l) => Eq (WarningText l)
instance (Ord l) => Ord (WarningText l)
instance (Show l) => Show (WarningText l)
instance (Data l) => Data (WarningText l)
instance (Eq l) => Eq (RuleVar l)
instance (Ord l) => Ord (RuleVar l)
instance (Show l) => Show (RuleVar l)
instance (Data l) => Data (RuleVar l)
instance (Eq l) => Eq (Rule l)
instance (Ord l) => Ord (Rule l)
instance (Show l) => Show (Rule l)
instance (Data l) => Data (Rule l)
instance (Eq l) => Eq (Activation l)
instance (Ord l) => Ord (Activation l)
instance (Show l) => Show (Activation l)
instance (Data l) => Data (Activation l)
instance Eq Tool
instance Ord Tool
instance Show Tool
instance Data Tool
instance (Eq l) => Eq (OptionPragma l)
instance (Ord l) => Ord (OptionPragma l)
instance (Show l) => Show (OptionPragma l)
instance (Data l) => Data (OptionPragma l)
instance (Eq l) => Eq (CallConv l)
instance (Ord l) => Ord (CallConv l)
instance (Show l) => Show (CallConv l)
instance (Data l) => Data (CallConv l)
instance (Eq l) => Eq (Safety l)
instance (Ord l) => Ord (Safety l)
instance (Show l) => Show (Safety l)
instance (Data l) => Data (Safety l)
instance (Eq l) => Eq (Splice l)
instance (Ord l) => Ord (Splice l)
instance (Show l) => Show (Splice l)
instance (Data l) => Data (Splice l)
instance (Eq l) => Eq (Bracket l)
instance (Ord l) => Ord (Bracket l)
instance (Show l) => Show (Bracket l)
instance (Data l) => Data (Bracket l)
instance (Eq l) => Eq (XAttr l)
instance (Ord l) => Ord (XAttr l)
instance (Show l) => Show (XAttr l)
instance (Data l) => Data (XAttr l)
instance (Eq l) => Eq (XName l)
instance (Ord l) => Ord (XName l)
instance (Show l) => Show (XName l)
instance (Data l) => Data (XName l)
instance (Eq l) => Eq (Exp l)
instance (Ord l) => Ord (Exp l)
instance (Show l) => Show (Exp l)
instance (Data l) => Data (Exp l)
instance (Eq l) => Eq (Literal l)
instance (Ord l) => Ord (Literal l)
instance (Show l) => Show (Literal l)
instance (Data l) => Data (Literal l)
instance (Eq l) => Eq (Asst l)
instance (Ord l) => Ord (Asst l)
instance (Show l) => Show (Asst l)
instance (Data l) => Data (Asst l)
instance (Eq l) => Eq (Context l)
instance (Ord l) => Ord (Context l)
instance (Show l) => Show (Context l)
instance (Data l) => Data (Context l)
instance (Eq l) => Eq (FunDep l)
instance (Ord l) => Ord (FunDep l)
instance (Show l) => Show (FunDep l)
instance (Data l) => Data (FunDep l)
instance (Eq l) => Eq (Kind l)
instance (Ord l) => Ord (Kind l)
instance (Show l) => Show (Kind l)
instance (Data l) => Data (Kind l)
instance (Eq l) => Eq (TyVarBind l)
instance (Ord l) => Ord (TyVarBind l)
instance (Show l) => Show (TyVarBind l)
instance (Data l) => Data (TyVarBind l)
instance Eq Boxed
instance Ord Boxed
instance Show Boxed
instance Data Boxed
instance (Eq l) => Eq (Type l)
instance (Ord l) => Ord (Type l)
instance (Show l) => Show (Type l)
instance (Data l) => Data (Type l)
instance (Eq l) => Eq (GuardedRhs l)
instance (Ord l) => Ord (GuardedRhs l)
instance (Show l) => Show (GuardedRhs l)
instance (Data l) => Data (GuardedRhs l)
instance (Eq l) => Eq (Rhs l)
instance (Ord l) => Ord (Rhs l)
instance (Show l) => Show (Rhs l)
instance (Data l) => Data (Rhs l)
instance (Eq l) => Eq (BangType l)
instance (Ord l) => Ord (BangType l)
instance (Show l) => Show (BangType l)
instance (Data l) => Data (BangType l)
instance (Eq l) => Eq (InstDecl l)
instance (Ord l) => Ord (InstDecl l)
instance (Show l) => Show (InstDecl l)
instance (Data l) => Data (InstDecl l)
instance (Eq l) => Eq (ClassDecl l)
instance (Ord l) => Ord (ClassDecl l)
instance (Show l) => Show (ClassDecl l)
instance (Data l) => Data (ClassDecl l)
instance (Eq l) => Eq (GadtDecl l)
instance (Ord l) => Ord (GadtDecl l)
instance (Show l) => Show (GadtDecl l)
instance (Data l) => Data (GadtDecl l)
instance (Eq l) => Eq (FieldDecl l)
instance (Ord l) => Ord (FieldDecl l)
instance (Show l) => Show (FieldDecl l)
instance (Data l) => Data (FieldDecl l)
instance (Eq l) => Eq (ConDecl l)
instance (Ord l) => Ord (ConDecl l)
instance (Show l) => Show (ConDecl l)
instance (Data l) => Data (ConDecl l)
instance (Eq l) => Eq (QualConDecl l)
instance (Ord l) => Ord (QualConDecl l)
instance (Show l) => Show (QualConDecl l)
instance (Data l) => Data (QualConDecl l)
instance (Eq l) => Eq (Match l)
instance (Ord l) => Ord (Match l)
instance (Show l) => Show (Match l)
instance (Data l) => Data (Match l)
instance (Eq l) => Eq (IPBind l)
instance (Ord l) => Ord (IPBind l)
instance (Show l) => Show (IPBind l)
instance (Data l) => Data (IPBind l)
instance (Eq l) => Eq (Binds l)
instance (Ord l) => Ord (Binds l)
instance (Show l) => Show (Binds l)
instance (Data l) => Data (Binds l)
instance (Eq l) => Eq (Deriving l)
instance (Ord l) => Ord (Deriving l)
instance (Show l) => Show (Deriving l)
instance (Data l) => Data (Deriving l)
instance (Eq l) => Eq (InstHead l)
instance (Ord l) => Ord (InstHead l)
instance (Show l) => Show (InstHead l)
instance (Data l) => Data (InstHead l)
instance (Eq l) => Eq (DeclHead l)
instance (Ord l) => Ord (DeclHead l)
instance (Show l) => Show (DeclHead l)
instance (Data l) => Data (DeclHead l)
instance (Eq l) => Eq (DataOrNew l)
instance (Ord l) => Ord (DataOrNew l)
instance (Show l) => Show (DataOrNew l)
instance (Data l) => Data (DataOrNew l)
instance (Eq l) => Eq (Decl l)
instance (Ord l) => Ord (Decl l)
instance (Show l) => Show (Decl l)
instance (Data l) => Data (Decl l)
instance (Eq l) => Eq (Assoc l)
instance (Ord l) => Ord (Assoc l)
instance (Show l) => Show (Assoc l)
instance (Data l) => Data (Assoc l)
instance (Eq l) => Eq (ImportSpec l)
instance (Ord l) => Ord (ImportSpec l)
instance (Show l) => Show (ImportSpec l)
instance (Data l) => Data (ImportSpec l)
instance (Eq l) => Eq (ImportSpecList l)
instance (Ord l) => Ord (ImportSpecList l)
instance (Show l) => Show (ImportSpecList l)
instance (Data l) => Data (ImportSpecList l)
instance (Eq l) => Eq (ImportDecl l)
instance (Ord l) => Ord (ImportDecl l)
instance (Show l) => Show (ImportDecl l)
instance (Data l) => Data (ImportDecl l)
instance (Eq l) => Eq (ExportSpec l)
instance (Ord l) => Ord (ExportSpec l)
instance (Show l) => Show (ExportSpec l)
instance (Data l) => Data (ExportSpec l)
instance (Eq l) => Eq (ExportSpecList l)
instance (Ord l) => Ord (ExportSpecList l)
instance (Show l) => Show (ExportSpecList l)
instance (Data l) => Data (ExportSpecList l)
instance (Eq l) => Eq (ModuleHead l)
instance (Ord l) => Ord (ModuleHead l)
instance (Show l) => Show (ModuleHead l)
instance (Data l) => Data (ModuleHead l)
instance (Eq l) => Eq (Module l)
instance (Ord l) => Ord (Module l)
instance (Show l) => Show (Module l)
instance (Data l) => Data (Module l)
instance (Eq l) => Eq (CName l)
instance (Ord l) => Ord (CName l)
instance (Show l) => Show (CName l)
instance (Data l) => Data (CName l)
instance (Eq l) => Eq (Op l)
instance (Ord l) => Ord (Op l)
instance (Show l) => Show (Op l)
instance (Data l) => Data (Op l)
instance (Eq l) => Eq (QOp l)
instance (Ord l) => Ord (QOp l)
instance (Show l) => Show (QOp l)
instance (Data l) => Data (QOp l)
instance (Eq l) => Eq (IPName l)
instance (Ord l) => Ord (IPName l)
instance (Show l) => Show (IPName l)
instance (Data l) => Data (IPName l)
instance (Eq l) => Eq (Name l)
instance (Ord l) => Ord (Name l)
instance (Show l) => Show (Name l)
instance (Data l) => Data (Name l)
instance (Eq l) => Eq (QName l)
instance (Ord l) => Ord (QName l)
instance (Show l) => Show (QName l)
instance (Data l) => Data (QName l)
instance (Eq l) => Eq (SpecialCon l)
instance (Ord l) => Ord (SpecialCon l)
instance (Show l) => Show (SpecialCon l)
instance (Data l) => Data (SpecialCon l)
instance (Eq l) => Eq (ModuleName l)
instance (Ord l) => Ord (ModuleName l)
instance (Show l) => Show (ModuleName l)
instance (Data l) => Data (ModuleName l)
instance Annotated GuardedAlt
instance Annotated GuardedAlts
instance Annotated Alt
instance Annotated FieldUpdate
instance Annotated QualStmt
instance Annotated Stmt
instance Annotated PatField
instance Annotated RPat
instance Annotated RPatOp
instance Annotated PXAttr
instance Annotated Pat
instance Annotated WarningText
instance Annotated RuleVar
instance Annotated Rule
instance Annotated Activation
instance Annotated OptionPragma
instance Annotated CallConv
instance Annotated Safety
instance Annotated Splice
instance Annotated Bracket
instance Annotated XAttr
instance Annotated XName
instance Annotated Exp
instance Annotated Literal
instance Annotated Asst
instance Annotated Context
instance Annotated FunDep
instance Annotated Kind
instance Annotated TyVarBind
instance Annotated Type
instance Annotated GuardedRhs
instance Annotated Rhs
instance Annotated BangType
instance Annotated InstDecl
instance Annotated ClassDecl
instance Annotated GadtDecl
instance Annotated FieldDecl
instance Annotated ConDecl
instance Annotated QualConDecl
instance Annotated Match
instance Annotated IPBind
instance Annotated Binds
instance Annotated InstHead
instance Annotated DeclHead
instance Annotated DataOrNew
instance Annotated Decl
instance Annotated Deriving
instance Annotated Assoc
instance Annotated ImportSpec
instance Annotated ImportSpecList
instance Annotated ImportDecl
instance Annotated ExportSpec
instance Annotated ExportSpecList
instance Annotated ModuleHead
instance Annotated Module
instance Annotated CName
instance Annotated Op
instance Annotated QOp
instance Annotated IPName
instance Annotated Name
instance Annotated QName
instance Annotated SpecialCon
instance Annotated ModuleName
instance Functor GuardedAlt
instance Functor GuardedAlts
instance Functor Alt
instance Functor FieldUpdate
instance Functor QualStmt
instance Functor Stmt
instance Functor PatField
instance Functor RPat
instance Functor RPatOp
instance Functor PXAttr
instance Functor Pat
instance Functor WarningText
instance Functor RuleVar
instance Functor Rule
instance Functor Activation
instance Functor OptionPragma
instance Functor CallConv
instance Functor Safety
instance Functor Splice
instance Functor Bracket
instance Functor XAttr
instance Functor XName
instance Functor Exp
instance Functor Literal
instance Functor Asst
instance Functor Context
instance Functor FunDep
instance Functor Kind
instance Functor TyVarBind
instance Functor Type
instance Functor GuardedRhs
instance Functor Rhs
instance Functor BangType
instance Functor InstDecl
instance Functor ClassDecl
instance Functor GadtDecl
instance Functor FieldDecl
instance Functor ConDecl
instance Functor QualConDecl
instance Functor Match
instance Functor IPBind
instance Functor Binds
instance Functor Deriving
instance Functor InstHead
instance Functor DeclHead
instance Functor DataOrNew
instance Functor Decl
instance Functor Assoc
instance Functor ImportSpec
instance Functor ImportSpecList
instance Functor ImportDecl
instance Functor ExportSpec
instance Functor ExportSpecList
instance Functor ModuleHead
instance Functor Module
instance Functor CName
instance Functor Op
instance Functor QOp
instance Functor IPName
instance Functor Name
instance Functor QName
instance Functor SpecialCon
instance Functor ModuleName
-- | This module contains combinators to use when building Haskell source
-- trees programmatically, as opposed to parsing them from a string. The
-- contents here are quite experimental and will likely receive a lot of
-- attention when the rest has stabilised.
module Language.Haskell.Exts.Annotated.Build
-- | An identifier with the given string as its name. The string should be
-- a valid Haskell identifier.
name :: l -> String -> Name l
-- | A symbol identifier. The string should be a valid Haskell symbol
-- identifier.
sym :: l -> String -> Name l
-- | A local variable as expression.
var :: l -> Name l -> Exp l
-- | Use the given identifier as an operator.
op :: l -> Name l -> QOp l
-- | A qualified variable as expression.
qvar :: l -> ModuleName l -> Name l -> Exp l
-- | A pattern variable.
pvar :: l -> Name l -> Pat l
-- | Application of expressions by juxtaposition.
app :: l -> Exp l -> Exp l -> Exp l
-- | Apply an operator infix.
infixApp :: l -> Exp l -> QOp l -> Exp l -> Exp l
-- | Apply a function to a list of arguments.
appFun :: [l] -> Exp l -> [Exp l] -> Exp l
-- | A constructor pattern, with argument patterns.
pApp :: l -> Name l -> [Pat l] -> Pat l
-- | A tuple expression.
tuple :: l -> [Exp l] -> Exp l
-- | A tuple pattern.
pTuple :: l -> [Pat l] -> Pat l
-- | A tuple expression consisting of variables only.
varTuple :: l -> [Name l] -> Exp l
-- | A tuple pattern consisting of variables only.
pvarTuple :: l -> [Name l] -> Pat l
-- | A function with a given name.
function :: l -> String -> Exp l
-- | A literal string expression.
strE :: l -> String -> Exp l
-- | A literal character expression.
charE :: l -> Char -> Exp l
-- | A literal integer expression.
intE :: l -> Integer -> Exp l
-- | A literal string pattern.
strP :: l -> String -> Pat l
-- | A literal character pattern.
charP :: l -> Char -> Pat l
-- | A literal integer pattern.
intP :: l -> Integer -> Pat l
-- | A do block formed by the given statements. The last statement in the
-- list should be a Qualifier expression.
doE :: l -> [Stmt l] -> Exp l
-- | Lambda abstraction, given a list of argument patterns and an
-- expression body.
lamE :: l -> [Pat l] -> Exp l -> Exp l
-- | A let ... in block.
letE :: l -> [Decl l] -> Exp l -> Exp l
-- | A case expression.
caseE :: l -> Exp l -> [Alt l] -> Exp l
-- | An unguarded alternative in a case expression.
alt :: l -> Pat l -> Exp l -> Alt l
-- | An alternative with a single guard in a case expression.
altGW :: l -> Pat l -> [Stmt l] -> Exp l -> Binds l -> Alt l
-- | A list expression.
listE :: l -> [Exp l] -> Exp l
-- | The empty list expression.
eList :: l -> Exp l
-- | The empty list pattern.
peList :: l -> Pat l
-- | Put parentheses around an expression.
paren :: l -> Exp l -> Exp l
-- | Put parentheses around a pattern.
pParen :: l -> Pat l -> Pat l
-- | A qualifier expression statement.
qualStmt :: l -> Exp l -> Stmt l
-- | A generator statement: pat <- exp
genStmt :: l -> Pat l -> Exp l -> Stmt l
-- | A let binding group as a statement.
letStmt :: l -> [Decl l] -> Stmt l
-- | Hoist a set of declarations to a binding group.
binds :: l -> [Decl l] -> Binds l
-- | An empty binding group.
noBinds :: l -> Binds l
-- | The wildcard pattern: _
wildcard :: l -> Pat l
-- | Generate k names by appending numbers 1 through k to a given string.
genNames :: l -> String -> Int -> [Name l]
-- | A function with a single clause
sfun :: l -> Name l -> [Name l] -> Rhs l -> Maybe (Binds l) -> Decl l
-- | A function with a single clause, a single argument, no guards and no
-- where declarations
simpleFun :: l -> Name l -> Name l -> Exp l -> Decl l
-- | A pattern bind where the pattern is a variable, and where there are no
-- guards and no 'where' clause.
patBind :: l -> Pat l -> Exp l -> Decl l
-- | A pattern bind where the pattern is a variable, and where there are no
-- guards, but with a 'where' clause.
patBindWhere :: l -> Pat l -> Exp l -> [Decl l] -> Decl l
-- | Bind an identifier to an expression.
nameBind :: l -> Name l -> Exp l -> Decl l
-- | Apply function of a given name to a list of arguments.
metaFunction :: l -> String -> [Exp l] -> Exp l
-- | Apply a constructor of a given name to a list of pattern arguments,
-- forming a constructor pattern.
metaConPat :: l -> String -> [Pat l] -> Pat l
module Language.Haskell.Exts.Comments
-- | A Haskell comment. The Bool is True if the comment is
-- multi-line, i.e. {- -}.
data Comment
Comment :: Bool -> SrcSpan -> String -> Comment
instance Typeable Comment
instance Eq Comment
instance Show Comment
instance Data Comment
-- | Exact-printer for Haskell abstract syntax. The input is a
-- (semi-concrete) abstract syntax tree, annotated with exact source
-- information to enable printing the tree exactly as it was parsed.
module Language.Haskell.Exts.Annotated.ExactPrint
-- | Print an AST exactly as specified by the annotations on the nodes in
-- the tree.
exactPrint :: (ExactP ast) => ast SrcSpanInfo -> [Comment] -> String
class ExactP ast
instance ExactP IPBind
instance ExactP FieldDecl
instance ExactP Activation
instance ExactP RuleVar
instance ExactP Rule
instance ExactP Safety
instance ExactP CallConv
instance ExactP Binds
instance ExactP XName
instance ExactP PXAttr
instance ExactP RPatOp
instance ExactP RPat
instance ExactP PatField
instance ExactP Pat
instance ExactP GuardedRhs
instance ExactP Rhs
instance ExactP Match
instance ExactP GuardedAlt
instance ExactP GuardedAlts
instance ExactP Alt
instance ExactP XAttr
instance ExactP Bracket
instance ExactP QualStmt
instance ExactP Stmt
instance ExactP FieldUpdate
instance ExactP Exp
instance ExactP Splice
instance ExactP BangType
instance ExactP GadtDecl
instance ExactP ConDecl
instance ExactP QualConDecl
instance ExactP FunDep
instance ExactP InstDecl
instance ExactP ClassDecl
instance ExactP Deriving
instance ExactP Asst
instance ExactP Context
instance ExactP Type
instance ExactP Kind
instance ExactP TyVarBind
instance ExactP InstHead
instance ExactP DeclHead
instance ExactP Decl
instance ExactP DataOrNew
instance ExactP Assoc
instance ExactP WarningText
instance ExactP OptionPragma
instance ExactP ModuleHead
instance ExactP Module
instance ExactP ImportDecl
instance ExactP ImportSpec
instance ExactP ImportSpecList
instance ExactP ExportSpecList
instance ExactP ExportSpec
instance ExactP CName
instance ExactP Op
instance ExactP QOp
instance ExactP IPName
instance ExactP Name
instance ExactP QName
instance ExactP SpecialCon
instance ExactP ModuleName
instance ExactP Literal
instance Monad EP
-- | This entire module should be replaced with Language.Haskell.Extension
-- from cabal, but we must wait for a release of cabal that includes the
-- XmlSyntax and RegularPatterns extensions.
module Language.Haskell.Exts.Extension
-- | This datatype is a copy of the one in Cabal's
-- Language.Haskell.Extension module. The intention is to eventually
-- import it from Cabal, but we need to wait for the next release of
-- Cabal which includes XmlSyntax and RegularPatterns.
data Extension
OverlappingInstances :: Extension
UndecidableInstances :: Extension
IncoherentInstances :: Extension
RecursiveDo :: Extension
ParallelListComp :: Extension
MultiParamTypeClasses :: Extension
NoMonomorphismRestriction :: Extension
FunctionalDependencies :: Extension
ExplicitForall :: Extension
Rank2Types :: Extension
RankNTypes :: Extension
PolymorphicComponents :: Extension
ExistentialQuantification :: Extension
ScopedTypeVariables :: Extension
ImplicitParams :: Extension
FlexibleContexts :: Extension
FlexibleInstances :: Extension
EmptyDataDecls :: Extension
CPP :: Extension
KindSignatures :: Extension
BangPatterns :: Extension
TypeSynonymInstances :: Extension
TemplateHaskell :: Extension
ForeignFunctionInterface :: Extension
Arrows :: Extension
Generics :: Extension
NoImplicitPrelude :: Extension
NamedFieldPuns :: Extension
PatternGuards :: Extension
GeneralizedNewtypeDeriving :: Extension
ExtensibleRecords :: Extension
RestrictedTypeSynonyms :: Extension
HereDocuments :: Extension
MagicHash :: Extension
TypeFamilies :: Extension
StandaloneDeriving :: Extension
UnicodeSyntax :: Extension
PatternSignatures :: Extension
UnliftedFFITypes :: Extension
LiberalTypeSynonyms :: Extension
TypeOperators :: Extension
RecordWildCards :: Extension
RecordPuns :: Extension
DisambiguateRecordFields :: Extension
OverloadedStrings :: Extension
GADTs :: Extension
MonoPatBinds :: Extension
NoMonoPatBinds :: Extension
RelaxedPolyRec :: Extension
ExtendedDefaultRules :: Extension
UnboxedTuples :: Extension
DeriveDataTypeable :: Extension
ConstrainedClassMethods :: Extension
PackageImports :: Extension
ImpredicativeTypes :: Extension
NewQualifiedOperators :: Extension
PostfixOperators :: Extension
QuasiQuotes :: Extension
TransformListComp :: Extension
ViewPatterns :: Extension
XmlSyntax :: Extension
RegularPatterns :: Extension
TupleSections :: Extension
UnknownExtension :: String -> Extension
-- | A clever version of read that returns an UnknownExtension if
-- the string is not recognised.
classifyExtension :: String -> Extension
-- | Certain extensions imply other extensions, and this function makes the
-- implication explicit. This also handles deprecated extensions, which
-- imply their replacements. The returned valued is the transitive
-- closure of implied extensions.
impliesExts :: [Extension] -> [Extension]
-- | The list of extensions enabled by GHC's portmanteau -fglasgow-exts
-- flag.
glasgowExts :: [Extension]
instance Eq Extension
instance Ord Extension
instance Show Extension
instance Read Extension
-- | A suite of datatypes describing the 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)
--
module Language.Haskell.Exts.Syntax
-- | A complete Haskell source module.
data Module
Module :: SrcLoc -> ModuleName -> [OptionPragma] -> (Maybe WarningText) -> (Maybe [ExportSpec]) -> [ImportDecl] -> [Decl] -> Module
-- | Warning text to optionally use in the module header of e.g. a
-- deprecated module.
data WarningText
DeprText :: String -> WarningText
WarnText :: String -> WarningText
-- | An item in a module's export specification.
data ExportSpec
-- | variable
EVar :: QName -> ExportSpec
-- | T: a class or datatype exported abstractly, or a type
-- synonym.
EAbs :: QName -> ExportSpec
-- | T(..): a class exported with all of its methods, or a
-- datatype exported with all of its constructors.
EThingAll :: QName -> ExportSpec
-- | T(C_1,...,C_n): a class exported with some of its methods, or
-- a datatype exported with some of its constructors.
EThingWith :: QName -> [CName] -> ExportSpec
-- | module M: re-export a module.
EModuleContents :: ModuleName -> ExportSpec
-- | An import declaration.
data ImportDecl
ImportDecl :: SrcLoc -> ModuleName -> Bool -> Bool -> Maybe String -> Maybe ModuleName -> Maybe (Bool, [ImportSpec]) -> ImportDecl
-- | position of the import keyword.
importLoc :: ImportDecl -> SrcLoc
-- | name of the module imported.
importModule :: ImportDecl -> ModuleName
-- | imported qualified?
importQualified :: ImportDecl -> Bool
-- | imported with {-# SOURCE #-}?
importSrc :: ImportDecl -> Bool
-- | imported with explicit package name
importPkg :: ImportDecl -> Maybe String
-- | optional alias name in an as clause.
importAs :: ImportDecl -> Maybe ModuleName
-- | optional list of import specifications. The Bool is True
-- if the names are excluded by hiding.
importSpecs :: ImportDecl -> Maybe (Bool, [ImportSpec])
-- | An import specification, representing a single explicit item imported
-- (or hidden) from a module.
data ImportSpec
-- | variable
IVar :: Name -> ImportSpec
-- | T: the name of a class, datatype or type synonym.
IAbs :: Name -> ImportSpec
-- | T(..): a class imported with all of its methods, or a
-- datatype imported with all of its constructors.
IThingAll :: Name -> ImportSpec
-- | T(C_1,...,C_n): a class imported with some of its methods, or
-- a datatype imported with some of its constructors.
IThingWith :: Name -> [CName] -> ImportSpec
-- | Associativity of an operator.
data Assoc
-- | non-associative operator (declared with infix)
AssocNone :: Assoc
-- | left-associative operator (declared with infixl).
AssocLeft :: Assoc
-- | right-associative operator (declared with infixr)
AssocRight :: Assoc
-- | A top-level declaration.
data Decl
-- | A type declaration
TypeDecl :: SrcLoc -> Name -> [TyVarBind] -> Type -> Decl
-- | A type family declaration
TypeFamDecl :: SrcLoc -> Name -> [TyVarBind] -> (Maybe Kind) -> Decl
-- | A data OR newtype declaration
DataDecl :: SrcLoc -> DataOrNew -> Context -> Name -> [TyVarBind] -> [QualConDecl] -> [Deriving] -> Decl
-- | A data OR newtype declaration, GADT style
GDataDecl :: SrcLoc -> DataOrNew -> Context -> Name -> [TyVarBind] -> (Maybe Kind) -> [GadtDecl] -> [Deriving] -> Decl
-- | A data family declaration
DataFamDecl :: SrcLoc -> Context -> Name -> [TyVarBind] -> (Maybe Kind) -> Decl
-- | A type family instance declaration
TypeInsDecl :: SrcLoc -> Type -> Type -> Decl
-- | A data family instance declaration
DataInsDecl :: SrcLoc -> DataOrNew -> Type -> [QualConDecl] -> [Deriving] -> Decl
-- | A data family instance declaration, GADT style
GDataInsDecl :: SrcLoc -> DataOrNew -> Type -> (Maybe Kind) -> [GadtDecl] -> [Deriving] -> Decl
-- | A declaration of a type class
ClassDecl :: SrcLoc -> Context -> Name -> [TyVarBind] -> [FunDep] -> [ClassDecl] -> Decl
-- | An declaration of a type class instance
InstDecl :: SrcLoc -> Context -> QName -> [Type] -> [InstDecl] -> Decl
-- | A standalone deriving declaration
DerivDecl :: SrcLoc -> Context -> QName -> [Type] -> Decl
-- | A declaration of operator fixity
InfixDecl :: SrcLoc -> Assoc -> Int -> [Op] -> Decl
-- | A declaration of default types
DefaultDecl :: SrcLoc -> [Type] -> Decl
-- | A Template Haskell splicing declaration
SpliceDecl :: SrcLoc -> Exp -> Decl
-- | A type signature declaration
TypeSig :: SrcLoc -> [Name] -> Type -> Decl
-- | A set of function binding clauses
FunBind :: [Match] -> Decl
-- | A pattern binding
PatBind :: SrcLoc -> Pat -> (Maybe Type) -> Rhs -> Binds -> Decl
-- | A foreign import declaration
ForImp :: SrcLoc -> CallConv -> Safety -> String -> Name -> Type -> Decl
-- | A foreign export declaration
ForExp :: SrcLoc -> CallConv -> String -> Name -> Type -> Decl
-- | A RULES pragma
RulePragmaDecl :: SrcLoc -> [Rule] -> Decl
-- | A DEPRECATED pragma
DeprPragmaDecl :: SrcLoc -> [([Name], String)] -> Decl
-- | A WARNING pragma
WarnPragmaDecl :: SrcLoc -> [([Name], String)] -> Decl
-- | An INLINE pragma
InlineSig :: SrcLoc -> Bool -> Activation -> QName -> Decl
-- | A SPECIALISE pragma
SpecSig :: SrcLoc -> QName -> [Type] -> Decl
-- | A SPECIALISE INLINE pragma
SpecInlineSig :: SrcLoc -> Bool -> Activation -> QName -> [Type] -> Decl
-- | A SPECIALISE instance pragma
InstSig :: SrcLoc -> Context -> QName -> [Type] -> Decl
-- | A binding group inside a let or where clause.
data Binds
-- | An ordinary binding group
BDecls :: [Decl] -> Binds
-- | A binding group for implicit parameters
IPBinds :: [IPBind] -> Binds
-- | A binding of an implicit parameter.
data IPBind
IPBind :: SrcLoc -> IPName -> Exp -> IPBind
-- | Declarations inside a class declaration.
data ClassDecl
-- | ordinary declaration
ClsDecl :: Decl -> ClassDecl
-- | declaration of an associated data type
ClsDataFam :: SrcLoc -> Context -> Name -> [TyVarBind] -> (Maybe Kind) -> ClassDecl
-- | declaration of an associated type synonym
ClsTyFam :: SrcLoc -> Name -> [TyVarBind] -> (Maybe Kind) -> ClassDecl
-- | default choice for an associated type synonym
ClsTyDef :: SrcLoc -> Type -> Type -> ClassDecl
-- | Declarations inside an instance declaration.
data InstDecl
-- | ordinary declaration
InsDecl :: Decl -> InstDecl
-- | an associated type definition
InsType :: SrcLoc -> Type -> Type -> InstDecl
-- | an associated data type implementation
InsData :: SrcLoc -> DataOrNew -> Type -> [QualConDecl] -> [Deriving] -> InstDecl
-- | an associated data type implemented using GADT style
InsGData :: SrcLoc -> DataOrNew -> Type -> (Maybe Kind) -> [GadtDecl] -> [Deriving] -> InstDecl
-- | an INLINE pragma
InsInline :: SrcLoc -> Bool -> Activation -> QName -> InstDecl
-- | A single derived instance, which may have arguments since it may be a
-- MPTC.
type Deriving = (QName, [Type])
-- | A flag stating whether a declaration is a data or newtype declaration.
data DataOrNew
DataType :: DataOrNew
NewType :: DataOrNew
-- | Declaration of an ordinary data constructor.
data ConDecl
-- | ordinary data constructor
ConDecl :: Name -> [BangType] -> ConDecl
-- | infix data constructor
InfixConDecl :: BangType -> Name -> BangType -> ConDecl
-- | record constructor
RecDecl :: Name -> [([Name], BangType)] -> ConDecl
-- | A single constructor declaration within a data type declaration, which
-- may have an existential quantification binding.
data QualConDecl
QualConDecl :: SrcLoc -> [TyVarBind] -> Context -> ConDecl -> QualConDecl
-- | A single constructor declaration in a GADT data type declaration.
data GadtDecl
GadtDecl :: SrcLoc -> Name -> Type -> GadtDecl
-- | The type of a constructor argument or field, optionally including a
-- strictness annotation.
data BangType
-- | strict component, marked with "!"
BangedTy :: Type -> BangType
-- | non-strict component
UnBangedTy :: Type -> BangType
-- | unboxed component, marked with an UNPACK pragma
UnpackedTy :: Type -> BangType
-- | Clauses of a function binding.
data Match
Match :: SrcLoc -> Name -> [Pat] -> (Maybe Type) -> Rhs -> Binds -> Match
-- | The right hand side of a function or pattern binding.
data Rhs
-- | unguarded right hand side (exp)
UnGuardedRhs :: Exp -> Rhs
-- | guarded right hand side (gdrhs)
GuardedRhss :: [GuardedRhs] -> Rhs
-- | A guarded right hand side | stmts =
-- exp. The guard is a series of statements when using pattern
-- guards, otherwise it will be a single qualifier expression.
data GuardedRhs
GuardedRhs :: SrcLoc -> [Stmt] -> Exp -> GuardedRhs
-- | A context is a set of assertions
type Context = [Asst]
-- | A functional dependency, given on the form l1 l2 ... ln -> r2 r3 ..
-- rn
data FunDep
FunDep :: [Name] -> [Name] -> FunDep
-- | 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.
data Asst
-- | ordinary class assertion
ClassA :: QName -> [Type] -> Asst
-- | class assertion where the class name is given infix
InfixA :: Type -> QName -> Type -> Asst
-- | implicit parameter assertion
IParam :: IPName -> Type -> Asst
-- | type equality constraint
EqualP :: Type -> Type -> Asst
-- | A type qualified with a context. An unqualified type has an empty
-- context.
data Type
-- | qualified type
TyForall :: (Maybe [TyVarBind]) -> Context -> Type -> Type
-- | function type
TyFun :: Type -> Type -> Type
-- | tuple type, possibly boxed
TyTuple :: Boxed -> [Type] -> Type
-- | list syntax, e.g. [a], as opposed to [] a
TyList :: Type -> Type
-- | application of a type constructor
TyApp :: Type -> Type -> Type
-- | type variable
TyVar :: Name -> Type
-- | named type or type constructor
TyCon :: QName -> Type
-- | type surrounded by parentheses
TyParen :: Type -> Type
-- | infix type constructor
TyInfix :: Type -> QName -> Type -> Type
-- | type with explicit kind signature
TyKind :: Type -> Kind -> Type
-- | Flag denoting whether a tuple is boxed or unboxed.
data Boxed
Boxed :: Boxed
Unboxed :: Boxed
-- | An explicit kind annotation.
data Kind
-- | *, the kind of types
KindStar :: Kind
-- | !, the kind of unboxed types
KindBang :: Kind
-- | ->, the kind of a type constructor
KindFn :: Kind -> Kind -> Kind
-- | a kind surrounded by parentheses
KindParen :: Kind -> Kind
-- | a kind variable (as of yet unsupported by compilers)
KindVar :: Name -> Kind
-- | A type variable declaration, optionally with an explicit kind
-- annotation.
data TyVarBind
-- | variable binding with kind annotation
KindedVar :: Name -> Kind -> TyVarBind
-- | ordinary variable binding
UnkindedVar :: Name -> TyVarBind
-- | Haskell expressions.
data Exp
-- | variable
Var :: QName -> Exp
-- | implicit parameter variable
IPVar :: IPName -> Exp
-- | data constructor
Con :: QName -> Exp
-- | literal constant
Lit :: Literal -> Exp
-- | infix application
InfixApp :: Exp -> QOp -> Exp -> Exp
-- | ordinary application
App :: Exp -> Exp -> Exp
-- | negation expression -exp (unary minus)
NegApp :: Exp -> Exp
-- | lambda expression
Lambda :: SrcLoc -> [Pat] -> Exp -> Exp
-- | local declarations with let ... in ...
Let :: Binds -> Exp -> Exp
-- | if exp then exp else
-- exp
If :: Exp -> Exp -> Exp -> Exp
-- | case exp of alts
Case :: Exp -> [Alt] -> Exp
-- | do-expression: the last statement in the list should be an
-- expression.
Do :: [Stmt] -> Exp
-- | mdo-expression
MDo :: [Stmt] -> Exp
-- | tuple expression
Tuple :: [Exp] -> Exp
-- | tuple section expression, e.g. (,,3)
TupleSection :: [Maybe Exp] -> Exp
-- | list expression
List :: [Exp] -> Exp
-- | parenthesised expression
Paren :: Exp -> Exp
-- | left section (exp qop)
LeftSection :: Exp -> QOp -> Exp
-- | right section (qop exp)
RightSection :: QOp -> Exp -> Exp
-- | record construction expression
RecConstr :: QName -> [FieldUpdate] -> Exp
-- | record update expression
RecUpdate :: Exp -> [FieldUpdate] -> Exp
-- | unbounded arithmetic sequence, incrementing by 1: [from ..]
EnumFrom :: Exp -> Exp
-- | bounded arithmetic sequence, incrementing by 1 [from .. to]
EnumFromTo :: Exp -> Exp -> Exp
-- | unbounded arithmetic sequence, with first two elements given
-- [from, then ..]
EnumFromThen :: Exp -> Exp -> Exp
-- | bounded arithmetic sequence, with first two elements given [from,
-- then .. to]
EnumFromThenTo :: Exp -> Exp -> Exp -> Exp
-- | ordinary list comprehension
ListComp :: Exp -> [QualStmt] -> Exp
-- | parallel list comprehension
ParComp :: Exp -> [[QualStmt]] -> Exp
-- | expression with explicit type signature
ExpTypeSig :: SrcLoc -> Exp -> Type -> Exp
-- | 'x for template haskell reifying of expressions
VarQuote :: QName -> Exp
-- | ''T for template haskell reifying of types
TypQuote :: QName -> Exp
-- | template haskell bracket expression
BracketExp :: Bracket -> Exp
-- | template haskell splice expression
SpliceExp :: Splice -> Exp
-- | quasi-quotaion: [$name| string |]
QuasiQuote :: String -> String -> Exp
-- | xml element, with attributes and children
XTag :: SrcLoc -> XName -> [XAttr] -> (Maybe Exp) -> [Exp] -> Exp
-- | empty xml element, with attributes
XETag :: SrcLoc -> XName -> [XAttr] -> (Maybe Exp) -> Exp
-- | PCDATA child element
XPcdata :: String -> Exp
-- | escaped haskell expression inside xml
XExpTag :: Exp -> Exp
-- | CORE pragma
CorePragma :: String -> Exp -> Exp
-- | SCC pragma
SCCPragma :: String -> Exp -> Exp
-- | GENERATED pragma
GenPragma :: String -> (Int, Int) -> (Int, Int) -> Exp -> Exp
-- | arrows proc: proc pat -> exp
Proc :: Pat -> Exp -> Exp
-- | arrow application (from left): exp -< exp
LeftArrApp :: Exp -> Exp -> Exp
-- | arrow application (from right): exp >- exp
RightArrApp :: Exp -> Exp -> Exp
-- | higher-order arrow application (from left): exp
-- -<< exp
LeftArrHighApp :: Exp -> Exp -> Exp
-- | higher-order arrow application (from right): exp
-- >>- exp
RightArrHighApp :: Exp -> Exp -> Exp
-- | 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.
data Stmt
-- | a generator: pat <- exp
Generator :: SrcLoc -> Pat -> Exp -> Stmt
-- | an exp by itself: in a do-expression, an action whose
-- result is discarded; in a list comprehension and pattern guard, a
-- guard expression
Qualifier :: Exp -> Stmt
-- | local bindings
LetStmt :: Binds -> Stmt
-- | a recursive binding group for arrows
RecStmt :: [Stmt] -> Stmt
-- | A general transqual in a list comprehension, which could
-- potentially be a transform of the kind enabled by TransformListComp.
data QualStmt
-- | an ordinary statement
QualStmt :: Stmt -> QualStmt
-- | then exp
ThenTrans :: Exp -> QualStmt
-- | then exp by exp
ThenBy :: Exp -> Exp -> QualStmt
-- | then group by exp
GroupBy :: Exp -> QualStmt
-- | then group using exp
GroupUsing :: Exp -> QualStmt
-- | then group by exp using
-- exp
GroupByUsing :: Exp -> Exp -> QualStmt
-- | An fbind in a labeled construction or update expression.
data FieldUpdate
-- | ordinary label-expresion pair
FieldUpdate :: QName -> Exp -> FieldUpdate
-- | record field pun
FieldPun :: Name -> FieldUpdate
-- | record field wildcard
FieldWildcard :: FieldUpdate
-- | An alt alternative in a case expression.
data Alt
Alt :: SrcLoc -> Pat -> GuardedAlts -> Binds -> Alt
-- | The right-hand sides of a case alternative, which may be a
-- single right-hand side or a set of guarded ones.
data GuardedAlts
-- | -> exp
UnGuardedAlt :: Exp -> GuardedAlts
-- | gdpat
GuardedAlts :: [GuardedAlt] -> GuardedAlts
-- | A guarded case alternative | stmts ->
-- exp.
data GuardedAlt
GuardedAlt :: SrcLoc -> [Stmt] -> Exp -> GuardedAlt
-- | An xml attribute, which is a name-expression pair.
data XAttr
XAttr :: XName -> Exp -> XAttr
-- | A pattern, to be matched against a value.
data Pat
-- | variable
PVar :: Name -> Pat
-- | literal constant
PLit :: Literal -> Pat
-- | negated pattern
PNeg :: Pat -> Pat
-- | n+k pattern
PNPlusK :: Name -> Integer -> Pat
-- | pattern with an infix data constructor
PInfixApp :: Pat -> QName -> Pat -> Pat
-- | data constructor and argument patterns
PApp :: QName -> [Pat] -> Pat
-- | tuple pattern
PTuple :: [Pat] -> Pat
-- | list pattern
PList :: [Pat] -> Pat
-- | parenthesized pattern
PParen :: Pat -> Pat
-- | labelled pattern, record style
PRec :: QName -> [PatField] -> Pat
-- | @-pattern
PAsPat :: Name -> Pat -> Pat
-- | wildcard pattern: _
PWildCard :: Pat
-- | irrefutable pattern: ~pat
PIrrPat :: Pat -> Pat
-- | pattern with type signature
PatTypeSig :: SrcLoc -> Pat -> Type -> Pat
-- | view patterns of the form (exp -> pat)
PViewPat :: Exp -> Pat -> Pat
-- | regular list pattern
PRPat :: [RPat] -> Pat
-- | XML element pattern
PXTag :: SrcLoc -> XName -> [PXAttr] -> (Maybe Pat) -> [Pat] -> Pat
-- | XML singleton element pattern
PXETag :: SrcLoc -> XName -> [PXAttr] -> (Maybe Pat) -> Pat
-- | XML PCDATA pattern
PXPcdata :: String -> Pat
-- | XML embedded pattern
PXPatTag :: Pat -> Pat
-- | XML regular list pattern
PXRPats :: [RPat] -> Pat
-- | Explicit generics style type argument e.g. f {| Int |} x =
-- ...
PExplTypeArg :: QName -> Type -> Pat
-- | quasi quote patter: [$name| string |]
PQuasiQuote :: String -> String -> Pat
-- | strict (bang) pattern: f !x = ...
PBangPat :: Pat -> Pat
-- | An fpat in a labeled record pattern.
data PatField
-- | ordinary label-pattern pair
PFieldPat :: QName -> Pat -> PatField
-- | record field pun
PFieldPun :: Name -> PatField
-- | record field wildcard
PFieldWildcard :: PatField
-- | An XML attribute in a pattern.
data PXAttr
PXAttr :: XName -> Pat -> PXAttr
-- | An entity in a regular pattern.
data RPat
RPOp :: RPat -> RPatOp -> RPat
RPEither :: RPat -> RPat -> RPat
RPSeq :: [RPat] -> RPat
RPGuard :: Pat -> [Stmt] -> RPat
RPCAs :: Name -> RPat -> RPat
RPAs :: Name -> RPat -> RPat
RPParen :: RPat -> RPat
RPPat :: Pat -> RPat
-- | A regular pattern operator.
data RPatOp
-- | * = 0 or more
RPStar :: RPatOp
-- | *! = 0 or more, greedy
RPStarG :: RPatOp
-- | + = 1 or more
RPPlus :: RPatOp
-- | +! = 1 or more, greedy
RPPlusG :: RPatOp
-- | ? = 0 or 1
RPOpt :: RPatOp
-- | ?! = 0 or 1, greedy
RPOptG :: RPatOp
-- | literal Values of this type hold the abstract value of the
-- literal, not the precise string representation used. For example,
-- 10, 0o12 and 0xa have the same
-- representation.
data Literal
-- | character literal
Char :: Char -> Literal
-- | string literal
String :: String -> Literal
-- | integer literal
Int :: Integer -> Literal
-- | floating point literal
Frac :: Rational -> Literal
-- | unboxed integer literal
PrimInt :: Integer -> Literal
-- | unboxed word literal
PrimWord :: Integer -> Literal
-- | unboxed float literal
PrimFloat :: Rational -> Literal
-- | unboxed double literal
PrimDouble :: Rational -> Literal
-- | unboxed character literal
PrimChar :: Char -> Literal
-- | unboxed string literal
PrimString :: String -> Literal
-- | The name of a Haskell module.
newtype ModuleName
ModuleName :: String -> ModuleName
-- | This type is used to represent qualified variables, and also qualified
-- constructors.
data QName
-- | name qualified with a module name
Qual :: ModuleName -> Name -> QName
-- | unqualified local name
UnQual :: Name -> QName
-- | built-in constructor with special syntax
Special :: SpecialCon -> QName
-- | This type is used to represent variables, and also constructors.
data Name
-- | varid or conid.
Ident :: String -> Name
-- | varsym or consym
Symbol :: String -> Name
-- | Possibly qualified infix operators (qop), appearing in
-- expressions.
data QOp
-- | variable operator (qvarop)
QVarOp :: QName -> QOp
-- | constructor operator (qconop)
QConOp :: QName -> QOp
-- | Operators appearing in infix declarations are never
-- qualified.
data Op
-- | variable operator (varop)
VarOp :: Name -> Op
-- | constructor operator (conop)
ConOp :: Name -> Op
-- | Constructors with special syntax. These names are never qualified, and
-- always refer to builtin type or data constructors.
data SpecialCon
-- | unit type and data constructor ()
UnitCon :: SpecialCon
-- | list type constructor []
ListCon :: SpecialCon
-- | function type constructor ->
FunCon :: SpecialCon
-- | n-ary tuple type and data constructors (,) etc,
-- possibly boxed (#,#)
TupleCon :: Boxed -> Int -> SpecialCon
-- | list data constructor (:)
Cons :: SpecialCon
-- | unboxed singleton tuple constructor (# #)
UnboxedSingleCon :: SpecialCon
-- | A name (cname) of a component of a class or data type in an
-- import or export specification.
data CName
-- | name of a method or field
VarName :: Name -> CName
-- | name of a data constructor
ConName :: Name -> CName
-- | An implicit parameter name.
data IPName
-- | ?ident, non-linear implicit parameter
IPDup :: String -> IPName
-- | %ident, linear implicit parameter
IPLin :: String -> IPName
-- | The name of an xml element or attribute, possibly qualified with a
-- namespace.
data XName
XName :: String -> XName
XDomName :: String -> String -> XName
-- | A template haskell bracket expression.
data Bracket
-- | expression bracket: [| ... |]
ExpBracket :: Exp -> Bracket
-- | pattern bracket: [p| ... |]
PatBracket :: Pat -> Bracket
-- | type bracket: [t| ... |]
TypeBracket :: Type -> Bracket
-- | declaration bracket: [d| ... |]
DeclBracket :: [Decl] -> Bracket
-- | A template haskell splice expression
data Splice
-- | variable splice: $var
IdSplice :: String -> Splice
-- | parenthesised expression splice: $(exp)
ParenSplice :: Exp -> Splice
-- | The safety of a foreign function call.
data Safety
-- | unsafe
PlayRisky :: Safety
-- | safe (False) or threadsafe (True)
PlaySafe :: Bool -> Safety
-- | The calling convention of a foreign function call.
data CallConv
StdCall :: CallConv
CCall :: CallConv
-- | A top level options pragma, preceding the module header.
data OptionPragma
-- | LANGUAGE pragma
LanguagePragma :: SrcLoc -> [Name] -> OptionPragma
-- | INCLUDE pragma
IncludePragma :: SrcLoc -> String -> OptionPragma
-- | CFILES pragma
CFilesPragma :: SrcLoc -> String -> OptionPragma
-- | OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC
OptionsPragma :: SrcLoc -> (Maybe Tool) -> String -> OptionPragma
-- | Recognised tools for OPTIONS pragmas.
data Tool
GHC :: Tool
HUGS :: Tool
NHC98 :: Tool
YHC :: Tool
HADDOCK :: Tool
UnknownTool :: String -> Tool
-- | The body of a RULES pragma.
data Rule
Rule :: String -> Activation -> (Maybe [RuleVar]) -> Exp -> Exp -> Rule
-- | Variables used in a RULES pragma, optionally annotated with types
data RuleVar
RuleVar :: Name -> RuleVar
TypedRuleVar :: Name -> Type -> RuleVar
-- | Activation clause of a RULES pragma.
data Activation
AlwaysActive :: Activation
ActiveFrom :: Int -> Activation
ActiveUntil :: Int -> Activation
prelude_mod :: ModuleName
main_mod :: ModuleName
main_name :: Name
unit_con_name :: QName
tuple_con_name :: Boxed -> Int -> QName
list_cons_name :: QName
unboxed_singleton_con_name :: QName
unit_con :: Exp
tuple_con :: Boxed -> Int -> Exp
unboxed_singleton_con :: Exp
as_name :: Name
qualified_name :: Name
hiding_name :: Name
minus_name :: Name
bang_name :: Name
dot_name :: Name
star_name :: Name
export_name :: Name
safe_name :: Name
unsafe_name :: Name
threadsafe_name :: Name
stdcall_name :: Name
ccall_name :: Name
unit_tycon_name :: QName
fun_tycon_name :: QName
list_tycon_name :: QName
tuple_tycon_name :: Boxed -> Int -> QName
unboxed_singleton_tycon_name :: QName
unit_tycon :: Type
fun_tycon :: Type
list_tycon :: Type
tuple_tycon :: Boxed -> Int -> Type
unboxed_singleton_tycon :: Type
-- | A single position in the source.
data SrcLoc
SrcLoc :: String -> Int -> Int -> SrcLoc
srcFilename :: SrcLoc -> String
srcLine :: SrcLoc -> Int
srcColumn :: SrcLoc -> Int
instance Typeable GuardedAlt
instance Typeable GuardedAlts
instance Typeable Alt
instance Typeable FieldUpdate
instance Typeable QualStmt
instance Typeable Stmt
instance Typeable PatField
instance Typeable RPat
instance Typeable RPatOp
instance Typeable PXAttr
instance Typeable Pat
instance Typeable WarningText
instance Typeable RuleVar
instance Typeable Rule
instance Typeable Activation
instance Typeable OptionPragma
instance Typeable CallConv
instance Typeable Safety
instance Typeable Splice
instance Typeable Bracket
instance Typeable XAttr
instance Typeable XName
instance Typeable Exp
instance Typeable Literal
instance Typeable Asst
instance Typeable FunDep
instance Typeable Kind
instance Typeable TyVarBind
instance Typeable Type
instance Typeable GuardedRhs
instance Typeable Rhs
instance Typeable BangType
instance Typeable InstDecl
instance Typeable ClassDecl
instance Typeable GadtDecl
instance Typeable ConDecl
instance Typeable QualConDecl
instance Typeable Match
instance Typeable IPBind
instance Typeable Binds
instance Typeable DataOrNew
instance Typeable Decl
instance Typeable Assoc
instance Typeable ImportSpec
instance Typeable ImportDecl
instance Typeable ExportSpec
instance Typeable Module
instance Typeable CName
instance Typeable Op
instance Typeable QOp
instance Typeable IPName
instance Typeable Name
instance Typeable QName
instance Typeable SpecialCon
instance Typeable ModuleName
instance Eq GuardedAlt
instance Ord GuardedAlt
instance Show GuardedAlt
instance Data GuardedAlt
instance Eq GuardedAlts
instance Ord GuardedAlts
instance Show GuardedAlts
instance Data GuardedAlts
instance Eq Alt
instance Ord Alt
instance Show Alt
instance Data Alt
instance Eq FieldUpdate
instance Ord FieldUpdate
instance Show FieldUpdate
instance Data FieldUpdate
instance Eq QualStmt
instance Ord QualStmt
instance Show QualStmt
instance Data QualStmt
instance Eq Stmt
instance Ord Stmt
instance Show Stmt
instance Data Stmt
instance Eq PatField
instance Ord PatField
instance Show PatField
instance Data PatField
instance Eq RPat
instance Ord RPat
instance Show RPat
instance Data RPat
instance Eq RPatOp
instance Ord RPatOp
instance Show RPatOp
instance Data RPatOp
instance Eq PXAttr
instance Ord PXAttr
instance Show PXAttr
instance Data PXAttr
instance Eq Pat
instance Ord Pat
instance Show Pat
instance Data Pat
instance Eq WarningText
instance Ord WarningText
instance Show WarningText
instance Data WarningText
instance Eq RuleVar
instance Ord RuleVar
instance Show RuleVar
instance Data RuleVar
instance Eq Rule
instance Ord Rule
instance Show Rule
instance Data Rule
instance Eq Activation
instance Ord Activation
instance Show Activation
instance Data Activation
instance Eq OptionPragma
instance Ord OptionPragma
instance Show OptionPragma
instance Data OptionPragma
instance Eq CallConv
instance Ord CallConv
instance Show CallConv
instance Data CallConv
instance Eq Safety
instance Ord Safety
instance Show Safety
instance Data Safety
instance Eq Splice
instance Ord Splice
instance Show Splice
instance Data Splice
instance Eq Bracket
instance Ord Bracket
instance Show Bracket
instance Data Bracket
instance Eq XAttr
instance Ord XAttr
instance Show XAttr
instance Data XAttr
instance Eq XName
instance Ord XName
instance Show XName
instance Data XName
instance Eq Exp
instance Ord Exp
instance Show Exp
instance Data Exp
instance Eq Literal
instance Ord Literal
instance Show Literal
instance Data Literal
instance Eq Asst
instance Ord Asst
instance Show Asst
instance Data Asst
instance Eq FunDep
instance Ord FunDep
instance Show FunDep
instance Data FunDep
instance Eq Kind
instance Ord Kind
instance Show Kind
instance Data Kind
instance Eq TyVarBind
instance Ord TyVarBind
instance Show TyVarBind
instance Data TyVarBind
instance Eq Type
instance Ord Type
instance Show Type
instance Data Type
instance Eq GuardedRhs
instance Ord GuardedRhs
instance Show GuardedRhs
instance Data GuardedRhs
instance Eq Rhs
instance Ord Rhs
instance Show Rhs
instance Data Rhs
instance Eq BangType
instance Ord BangType
instance Show BangType
instance Data BangType
instance Eq InstDecl
instance Ord InstDecl
instance Show InstDecl
instance Data InstDecl
instance Eq ClassDecl
instance Ord ClassDecl
instance Show ClassDecl
instance Data ClassDecl
instance Eq GadtDecl
instance Ord GadtDecl
instance Show GadtDecl
instance Data GadtDecl
instance Eq ConDecl
instance Ord ConDecl
instance Show ConDecl
instance Data ConDecl
instance Eq QualConDecl
instance Ord QualConDecl
instance Show QualConDecl
instance Data QualConDecl
instance Eq Match
instance Ord Match
instance Show Match
instance Data Match
instance Eq IPBind
instance Ord IPBind
instance Show IPBind
instance Data IPBind
instance Eq Binds
instance Ord Binds
instance Show Binds
instance Data Binds
instance Eq DataOrNew
instance Ord DataOrNew
instance Show DataOrNew
instance Data DataOrNew
instance Eq Decl
instance Ord Decl
instance Show Decl
instance Data Decl
instance Eq Assoc
instance Ord Assoc
instance Show Assoc
instance Data Assoc
instance Eq ImportSpec
instance Ord ImportSpec
instance Show ImportSpec
instance Data ImportSpec
instance Eq ImportDecl
instance Ord ImportDecl
instance Show ImportDecl
instance Data ImportDecl
instance Eq ExportSpec
instance Ord ExportSpec
instance Show ExportSpec
instance Data ExportSpec
instance Eq Module
instance Ord Module
instance Show Module
instance Data Module
instance Eq CName
instance Ord CName
instance Show CName
instance Data CName
instance Eq Op
instance Ord Op
instance Show Op
instance Data Op
instance Eq QOp
instance Ord QOp
instance Show QOp
instance Data QOp
instance Eq IPName
instance Ord IPName
instance Show IPName
instance Data IPName
instance Eq Name
instance Ord Name
instance Show Name
instance Data Name
instance Eq QName
instance Ord QName
instance Show QName
instance Data QName
instance Eq SpecialCon
instance Ord SpecialCon
instance Show SpecialCon
instance Data SpecialCon
instance Eq ModuleName
instance Ord ModuleName
instance Show ModuleName
instance Data ModuleName
-- | This module contains combinators to use when building Haskell source
-- trees programmatically, as opposed to parsing them from a string. The
-- contents here are quite experimental and will likely receive a lot of
-- attention when the rest has stabilised.
module Language.Haskell.Exts.Build
-- | An identifier with the given string as its name. The string should be
-- a valid Haskell identifier.
name :: String -> Name
-- | A symbol identifier. The string should be a valid Haskell symbol
-- identifier.
sym :: String -> Name
-- | A local variable as expression.
var :: Name -> Exp
-- | Use the given identifier as an operator.
op :: Name -> QOp
-- | A qualified variable as expression.
qvar :: ModuleName -> Name -> Exp
-- | A pattern variable.
pvar :: Name -> Pat
-- | Application of expressions by juxtaposition.
app :: Exp -> Exp -> Exp
-- | Apply an operator infix.
infixApp :: Exp -> QOp -> Exp -> Exp
-- | Apply a function to a list of arguments.
appFun :: Exp -> [Exp] -> Exp
-- | A constructor pattern, with argument patterns.
pApp :: Name -> [Pat] -> Pat
-- | A tuple expression.
tuple :: [Exp] -> Exp
-- | A tuple pattern.
pTuple :: [Pat] -> Pat
-- | A tuple expression consisting of variables only.
varTuple :: [Name] -> Exp
-- | A tuple pattern consisting of variables only.
pvarTuple :: [Name] -> Pat
-- | A function with a given name.
function :: String -> Exp
-- | A literal string expression.
strE :: String -> Exp
-- | A literal character expression.
charE :: Char -> Exp
-- | A literal integer expression.
intE :: Integer -> Exp
-- | A literal string pattern.
strP :: String -> Pat
-- | A literal character pattern.
charP :: Char -> Pat
-- | A literal integer pattern.
intP :: Integer -> Pat
-- | A do block formed by the given statements. The last statement in the
-- list should be a Qualifier expression.
doE :: [Stmt] -> Exp
-- | Lambda abstraction, given a list of argument patterns and an
-- expression body.
lamE :: SrcLoc -> [Pat] -> Exp -> Exp
-- | A let ... in block.
letE :: [Decl] -> Exp -> Exp
-- | A case expression.
caseE :: Exp -> [Alt] -> Exp
-- | An unguarded alternative in a case expression.
alt :: SrcLoc -> Pat -> Exp -> Alt
-- | An alternative with a single guard in a case expression.
altGW :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt
-- | A list expression.
listE :: [Exp] -> Exp
-- | The empty list expression.
eList :: Exp
-- | The empty list pattern.
peList :: Pat
-- | Put parentheses around an expression.
paren :: Exp -> Exp
-- | Put parentheses around a pattern.
pParen :: Pat -> Pat
-- | A qualifier expression statement.
qualStmt :: Exp -> Stmt
-- | A generator statement: pat <- exp
genStmt :: SrcLoc -> Pat -> Exp -> Stmt
-- | A let binding group as a statement.
letStmt :: [Decl] -> Stmt
-- | Hoist a set of declarations to a binding group.
binds :: [Decl] -> Binds
-- | An empty binding group.
noBinds :: Binds
-- | The wildcard pattern: _
wildcard :: Pat
-- | Generate k names by appending numbers 1 through k to a given string.
genNames :: String -> Int -> [Name]
-- | A function with a single clause
sfun :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl
-- | A function with a single clause, a single argument, no guards and no
-- where declarations
simpleFun :: SrcLoc -> Name -> Name -> Exp -> Decl
-- | A pattern bind where the pattern is a variable, and where there are no
-- guards and no 'where' clause.
patBind :: SrcLoc -> Pat -> Exp -> Decl
-- | A pattern bind where the pattern is a variable, and where there are no
-- guards, but with a 'where' clause.
patBindWhere :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl
-- | Bind an identifier to an expression.
nameBind :: SrcLoc -> Name -> Exp -> Decl
-- | Apply function of a given name to a list of arguments.
metaFunction :: String -> [Exp] -> Exp
-- | Apply a constructor of a given name to a list of pattern arguments,
-- forming a constructor pattern.
metaConPat :: String -> [Pat] -> Pat
-- | Fixity information to give the parser so that infix operators can be
-- parsed properly.
module Language.Haskell.Exts.Fixity
-- | Operator fixities are represented by their associativity (left, right
-- or none) and their precedence (0-9).
data Fixity
Fixity :: Assoc -> Int -> Op -> Fixity
infix_ :: Int -> [String] -> [Fixity]
infixl_ :: Int -> [String] -> [Fixity]
infixr_ :: Int -> [String] -> [Fixity]
-- | All fixities defined in the Prelude.
preludeFixities :: [Fixity]
-- | All fixities defined in the base package.
--
-- Note that the +++ operator appears in both Control.Arrows and
-- Text.ParserCombinators.ReadP. The listed precedence for +++
-- in this list is that of Control.Arrows.
baseFixities :: [Fixity]
-- | All AST elements that may include expressions which in turn may need
-- fixity tweaking will be instances of this class.
class AppFixity ast
applyFixities :: (AppFixity ast) => [Fixity] -> ast -> ast
instance AppFixity XAttr
instance AppFixity Splice
instance AppFixity Bracket
instance AppFixity QualStmt
instance AppFixity GuardedAlt
instance AppFixity GuardedAlts
instance AppFixity Alt
instance AppFixity FieldUpdate
instance AppFixity IPBind
instance AppFixity Binds
instance AppFixity Stmt
instance AppFixity PXAttr
instance AppFixity RPat
instance AppFixity PatField
instance AppFixity Pat
instance AppFixity GuardedRhs
instance AppFixity Rhs
instance AppFixity Match
instance AppFixity InstDecl
instance AppFixity ClassDecl
instance AppFixity Decl
instance AppFixity Module
instance AppFixity Exp
-- | This module contains code for translating from the annotated complex
-- AST in Language.Haskell.Exts.Annotated.Syntax to the simpler, sparsely
-- annotated AST in Language.Haskell.Exts.Syntax.
module Language.Haskell.Exts.Annotated.Simplify
sModuleName :: ModuleName l -> ModuleName
sSpecialCon :: SpecialCon l -> SpecialCon
sQName :: QName l -> QName
sName :: Name l -> Name
sIPName :: IPName l -> IPName
sQOp :: QOp l -> QOp
sOp :: Op l -> Op
sCName :: CName l -> CName
sModuleHead :: Maybe (ModuleHead l) -> (ModuleName, Maybe (WarningText), Maybe [ExportSpec])
-- | Translate an annotated AST node representing a Haskell module, into a
-- simpler version that retains (almost) only abstract information. In
-- particular, XML and hybrid XML pages enabled by the XmlSyntax
-- extension are translated into standard Haskell modules with a
-- page function.
sModule :: (SrcInfo loc) => Module loc -> Module
pageFun :: SrcLoc -> Exp -> Decl
sExportSpecList :: ExportSpecList l -> [ExportSpec]
sExportSpec :: ExportSpec l -> ExportSpec
sImportDecl :: (SrcInfo loc) => ImportDecl loc -> ImportDecl
sImportSpecList :: ImportSpecList l -> (Bool, [ImportSpec])
sImportSpec :: ImportSpec l -> ImportSpec
sAssoc :: Assoc l -> Assoc
sDeclHead :: DeclHead l -> (Name, [TyVarBind])
sInstHead :: InstHead l -> (QName, [Type])
-- | Translate an annotated AST node representing a Haskell declaration
-- into a simpler version. Note that in the simpler version, all
-- declaration nodes are still annotated by SrcLocs.
sDecl :: (SrcInfo loc) => Decl loc -> Decl
sDataOrNew :: DataOrNew l -> DataOrNew
sDeriving :: (Deriving l) -> [(QName, [Type])]
sBinds :: (SrcInfo loc) => Binds loc -> Binds
sIPBind :: (SrcInfo loc) => IPBind loc -> IPBind
sMatch :: (SrcInfo loc) => Match loc -> Match
sQualConDecl :: (SrcInfo loc) => QualConDecl loc -> QualConDecl
sConDecl :: ConDecl l -> ConDecl
sFieldDecl :: FieldDecl l -> ([Name], BangType)
sGadtDecl :: (SrcInfo loc) => GadtDecl loc -> GadtDecl
sClassDecl :: (SrcInfo loc) => ClassDecl loc -> ClassDecl
sInstDecl :: (SrcInfo loc) => InstDecl loc -> InstDecl
sBangType :: BangType l -> BangType
sRhs :: (SrcInfo loc) => Rhs loc -> Rhs
sGuardedRhs :: (SrcInfo loc) => GuardedRhs loc -> GuardedRhs
-- | Translate an annotated AST node representing a Haskell type into a
-- simpler unannotated form.
sType :: Type l -> Type
sTyVarBind :: TyVarBind l -> TyVarBind
sKind :: Kind l -> Kind
sFunDep :: FunDep l -> FunDep
sContext :: Context l -> Context
sAsst :: Asst l -> Asst
sLiteral :: Literal l -> Literal
-- | Translate an annotated AST node representing a Haskell expression into
-- a simpler unannotated form.
sExp :: (SrcInfo loc) => Exp loc -> Exp
sXName :: XName l -> XName
sXAttr :: (SrcInfo loc) => XAttr loc -> XAttr
sBracket :: (SrcInfo loc) => Bracket loc -> Bracket
sSplice :: (SrcInfo loc) => Splice loc -> Splice
sSafety :: Safety l -> Safety
sCallConv :: CallConv l -> CallConv
-- | Translate an annotated AST node representing a top-level Options
-- pragma into a simpler unannotated form.
sOptionPragma :: (SrcInfo loc) => OptionPragma loc -> OptionPragma
sActivation :: Activation l -> Activation
sRule :: (SrcInfo loc) => Rule loc -> Rule
sRuleVar :: RuleVar l -> RuleVar
sWarningText :: WarningText l -> WarningText
-- | Translate an annotated AST node representing a Haskell pattern into a
-- simpler unannotated form.
sPat :: (SrcInfo loc) => Pat loc -> Pat
sPXAttr :: (SrcInfo loc) => PXAttr loc -> PXAttr
sRPatOp :: RPatOp l -> RPatOp
sRPat :: (SrcInfo loc) => RPat loc -> RPat
sPatField :: (SrcInfo loc) => PatField loc -> PatField
sStmt :: (SrcInfo loc) => Stmt loc -> Stmt
sQualStmt :: (SrcInfo loc) => QualStmt loc -> QualStmt
sFieldUpdate :: (SrcInfo loc) => FieldUpdate loc -> FieldUpdate
sAlt :: (SrcInfo loc) => Alt loc -> Alt
sGuardedAlts :: (SrcInfo loc) => GuardedAlts loc -> GuardedAlts
sGuardedAlt :: (SrcInfo loc) => GuardedAlt loc -> GuardedAlt
-- | Pretty printer for Haskell with extensions.
module Language.Haskell.Exts.Pretty
-- | Things that can be pretty-printed, including all the syntactic objects
-- in Language.Haskell.Exts.Syntax.
class Pretty a
-- | pretty-print with a given style and mode.
prettyPrintStyleMode :: (Pretty a) => Style -> PPHsMode -> a -> String
-- | pretty-print with the default style and a given mode.
prettyPrintWithMode :: (Pretty a) => PPHsMode -> a -> String
-- | pretty-print with the default style and defaultMode.
prettyPrint :: (Pretty a) => a -> String
-- | A rendering style.
data Style :: *
Style :: Mode -> Int -> Float -> Style
-- | The rendering mode
mode :: Style -> Mode
-- | Length of line, in chars
lineLength :: Style -> Int
-- | Ratio of ribbon length to line length
ribbonsPerLine :: Style -> Float
-- | The default style (mode=PageMode, lineLength=100,
-- ribbonsPerLine=1.5).
style :: Style
-- | Rendering mode.
data Mode :: *
-- | Normal
PageMode :: Mode
-- | With zig-zag cuts
ZigZagMode :: Mode
-- | No indentation, infinitely long lines
LeftMode :: Mode
-- | All on one line
OneLineMode :: Mode
-- | Pretty-printing parameters.
--
-- Note: the onsideIndent must be positive and less than
-- all other indents.
data PPHsMode
PPHsMode :: Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> Bool -> PPLayout -> Bool -> PPHsMode
-- | indentation of a class or instance
classIndent :: PPHsMode -> Indent
-- | indentation of a do-expression
doIndent :: PPHsMode -> Indent
-- | indentation of the body of a case expression
caseIndent :: PPHsMode -> Indent
-- | indentation of the declarations in a let expression
letIndent :: PPHsMode -> Indent
-- | indentation of the declarations in a where clause
whereIndent :: PPHsMode -> Indent
-- | indentation added for continuation lines that would otherwise be
-- offside
onsideIndent :: PPHsMode -> Indent
-- | blank lines between statements?
spacing :: PPHsMode -> Bool
-- | Pretty-printing style to use
layout :: PPHsMode -> PPLayout
-- | add GHC-style LINE pragmas to output?
linePragmas :: PPHsMode -> Bool
type Indent = Int
-- | Varieties of layout we can use.
data PPLayout
-- | classical layout
PPOffsideRule :: PPLayout
-- | classical layout made explicit
PPSemiColon :: PPLayout
-- | inline decls, with newlines between them
PPInLine :: PPLayout
-- | everything on a single line
PPNoLayout :: PPLayout
-- | The default mode: pretty-print using the offside rule and sensible
-- defaults.
defaultMode :: PPHsMode
instance Eq PPLayout
instance (SrcInfo loc) => Pretty (PType loc)
instance (SrcInfo loc) => Pretty (PAsst loc)
instance (SrcInfo loc) => Pretty (PContext loc)
instance (SrcInfo loc) => Pretty (ParseXAttr loc)
instance (SrcInfo loc) => Pretty (PFieldUpdate loc)
instance (SrcInfo loc) => Pretty (PExp loc)
instance Pretty (Asst l)
instance Pretty (Context l)
instance Pretty (CName l)
instance (SrcInfo loc) => Pretty (IPBind loc)
instance Pretty (IPName l)
instance Pretty (Name l)
instance Pretty (Op l)
instance Pretty (QName l)
instance Pretty (QOp l)
instance (SrcInfo loc) => Pretty (FieldUpdate loc)
instance (SrcInfo loc) => Pretty (QualStmt loc)
instance (SrcInfo loc) => Pretty (Stmt loc)
instance (SrcInfo loc) => Pretty (GuardedAlt loc)
instance (SrcInfo loc) => Pretty (GuardedAlts loc)
instance (SrcInfo loc) => Pretty (Alt loc)
instance Pretty (RPatOp l)
instance (SrcInfo loc) => Pretty (RPat loc)
instance (SrcInfo loc) => Pretty (PatField loc)
instance (SrcInfo loc) => Pretty (PXAttr loc)
instance (SrcInfo loc) => Pretty (Pat loc)
instance (SrcInfo loc) => Pretty (Splice loc)
instance (SrcInfo loc) => Pretty (Bracket loc)
instance Pretty (XName l)
instance (SrcInfo loc) => Pretty (XAttr loc)
instance (SrcInfo loc) => Pretty (Exp loc)
instance Pretty (Literal l)
instance (SrcInfo loc) => Pretty (GuardedRhs loc)
instance (SrcInfo loc) => Pretty (Rhs loc)
instance Pretty (FunDep l)
instance Pretty (Kind l)
instance Pretty (TyVarBind l)
instance Pretty (Type l)
instance Pretty (Deriving l)
instance Pretty (BangType l)
instance Pretty (FieldDecl l)
instance Pretty (ConDecl l)
instance Pretty (GadtDecl l)
instance Pretty (QualConDecl l)
instance Pretty (OptionPragma l)
instance Pretty (RuleVar l)
instance Pretty (Activation l)
instance (SrcInfo loc) => Pretty (Rule loc)
instance Pretty (CallConv l)
instance Pretty (Safety l)
instance (SrcInfo loc) => Pretty (InstDecl loc)
instance (SrcInfo loc) => Pretty (ClassDecl loc)
instance (SrcInfo pos) => Pretty (Match pos)
instance Pretty (Assoc l)
instance Pretty (DataOrNew l)
instance Pretty (InstHead l)
instance Pretty (DeclHead l)
instance (SrcInfo pos) => Pretty (Decl pos)
instance Pretty (ImportSpec l)
instance Pretty (ImportSpecList l)
instance (SrcInfo pos) => Pretty (ImportDecl pos)
instance Pretty (ExportSpec l)
instance Pretty (ExportSpecList l)
instance Pretty (ModuleName l)
instance Pretty (WarningText l)
instance Pretty (ModuleHead l)
instance (SrcInfo pos) => Pretty (Module pos)
instance Pretty SrcSpan
instance Pretty SrcLoc
instance Pretty Asst
instance Pretty SpecialCon
instance Pretty CName
instance Pretty IPBind
instance Pretty IPName
instance Pretty Name
instance Pretty Op
instance Pretty QName
instance Pretty QOp
instance Pretty FieldUpdate
instance Pretty QualStmt
instance Pretty Stmt
instance Pretty GuardedAlt
instance Pretty GuardedAlts
instance Pretty Alt
instance Pretty RPatOp
instance Pretty RPat
instance Pretty PatField
instance Pretty PXAttr
instance Pretty Pat
instance Pretty Splice
instance Pretty Bracket
instance Pretty XName
instance Pretty XAttr
instance Pretty Exp
instance Pretty Literal
instance Pretty GuardedRhs
instance Pretty Rhs
instance Pretty FunDep
instance Pretty Kind
instance Pretty TyVarBind
instance Pretty Type
instance Pretty BangType
instance Pretty ConDecl
instance Pretty GadtDecl
instance Pretty QualConDecl
instance Pretty Tool
instance Pretty OptionPragma
instance Pretty RuleVar
instance Pretty Activation
instance Pretty Rule
instance Pretty CallConv
instance Pretty Safety
instance Pretty InstDecl
instance Pretty ClassDecl
instance Pretty Match
instance Pretty Assoc
instance Pretty DataOrNew
instance Pretty Decl
instance Pretty ImportSpec
instance Pretty ImportDecl
instance Pretty ExportSpec
instance Pretty ModuleName
instance Pretty Module
instance Monad (DocM s)
instance Functor (DocM s)
-- | Fixity information to give the parser so that infix operators can be
-- parsed properly.
module Language.Haskell.Exts.Annotated.Fixity
-- | Operator fixities are represented by their associativity (left, right
-- or none) and their precedence (0-9).
data Fixity
Fixity :: Assoc -> Int -> Op -> Fixity
infix_ :: Int -> [String] -> [Fixity]
infixl_ :: Int -> [String] -> [Fixity]
infixr_ :: Int -> [String] -> [Fixity]
-- | All fixities defined in the Prelude.
preludeFixities :: [Fixity]
-- | All fixities defined in the base package.
--
-- Note that the +++ operator appears in both Control.Arrows and
-- Text.ParserCombinators.ReadP. The listed precedence for +++
-- in this list is that of Control.Arrows.
baseFixities :: [Fixity]
-- | All AST elements that may include expressions which in turn may need
-- fixity tweaking will be instances of this class.
class AppFixity ast
applyFixities :: (AppFixity ast) => [Fixity] -> ast SrcSpanInfo -> ast SrcSpanInfo
instance AppFixity XAttr
instance AppFixity Splice
instance AppFixity Bracket
instance AppFixity QualStmt
instance AppFixity GuardedAlt
instance AppFixity GuardedAlts
instance AppFixity Alt
instance AppFixity FieldUpdate
instance AppFixity IPBind
instance AppFixity Binds
instance AppFixity Stmt
instance AppFixity PXAttr
instance AppFixity RPat
instance AppFixity PatField
instance AppFixity Pat
instance AppFixity GuardedRhs
instance AppFixity Rhs
instance AppFixity Match
instance AppFixity InstDecl
instance AppFixity ClassDecl
instance AppFixity Decl
instance AppFixity Module
instance AppFixity Exp
module Language.Haskell.Exts.Parser
-- | Class to reuse the parse function at many different types.
class Parseable ast
parse :: (Parseable ast) => String -> ParseResult ast
parseWithMode :: (Parseable ast) => ParseMode -> String -> ParseResult ast
parseWithComments :: (Parseable ast) => ParseMode -> String -> ParseResult (ast, [Comment])
-- | Static parameters governing a parse. Note that the various parse
-- functions in Language.Haskell.Exts.Parser never look at
-- LANGUAGE pragmas, regardless of what the
-- ignoreLanguagePragmas flag is set to. Only the various
-- parseFile functions in Language.Haskell.Exts will act
-- on it, when set to False.
data ParseMode
ParseMode :: String -> [Extension] -> Bool -> [Fixity] -> ParseMode
-- | original name of the file being parsed
parseFilename :: ParseMode -> String
-- | list of extensions enabled for parsing
extensions :: ParseMode -> [Extension]
-- | if True, the parser won't care about further extensions in
-- LANGUAGE pragmas in source files
ignoreLanguagePragmas :: ParseMode -> Bool
-- | list of fixities to be aware of
fixities :: ParseMode -> [Fixity]
-- | Default parameters for a parse. The default is an unknown filename, no
-- extensions (i.e. Haskell 98), don't ignore LANGUAGE pragmas, and be
-- aware of fixities from the Prelude.
defaultParseMode :: ParseMode
-- | The result of a parse.
data ParseResult a
-- | The parse succeeded, yielding a value.
ParseOk :: a -> ParseResult a
-- | The parse failed at the specified source location, with an error
-- message.
ParseFailed :: SrcLoc -> String -> ParseResult a
-- | Retrieve the result of a successful parse, throwing an error if the
-- parse is actually not successful.
fromParseResult :: ParseResult a -> a
-- | Parse of a string, which should contain a complete Haskell module.
parseModule :: String -> ParseResult Module
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode.
parseModuleWithMode :: ParseMode -> String -> ParseResult Module
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode, retaining comments.
parseModuleWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])
-- | Parse of a string containing a Haskell expression.
parseExp :: String -> ParseResult Exp
-- | Parse of a string containing a Haskell expression, using an explicit
-- mode.
parseExpWithMode :: ParseMode -> String -> ParseResult Exp
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode, retaining comments.
parseExpWithComments :: ParseMode -> String -> ParseResult (Exp, [Comment])
-- | Parse of a string containing a Haskell pattern.
parsePat :: String -> ParseResult Pat
-- | Parse of a string containing a Haskell pattern, using an explicit
-- mode.
parsePatWithMode :: ParseMode -> String -> ParseResult Pat
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode, retaining comments.
parsePatWithComments :: ParseMode -> String -> ParseResult (Pat, [Comment])
-- | Parse of a string containing a Haskell top-level declaration.
parseDecl :: String -> ParseResult Decl
-- | Parse of a string containing a Haskell top-level declaration, using an
-- explicit mode.
parseDeclWithMode :: ParseMode -> String -> ParseResult Decl
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode, retaining comments.
parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl, [Comment])
-- | Parse of a string containing a Haskell type.
parseType :: String -> ParseResult Type
-- | Parse of a string containing a Haskell type, using an explicit mode.
parseTypeWithMode :: ParseMode -> String -> ParseResult Type
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode, retaining comments.
parseTypeWithComments :: ParseMode -> String -> ParseResult (Type, [Comment])
getTopPragmas :: String -> ParseResult [OptionPragma]
instance Parseable Type
instance Parseable Decl
instance Parseable Pat
instance Parseable Exp
instance Parseable Module
instance (SrcInfo loc) => Parseable (Type loc)
instance (SrcInfo loc) => Parseable (Decl loc)
instance (SrcInfo loc) => Parseable (Pat loc)
instance (SrcInfo loc) => Parseable (Exp loc)
instance (SrcInfo loc) => Parseable (Module loc)
-- | An umbrella module for the various functionality of the package. Also
-- provides some convenient functionality for dealing directly with
-- source files.
module Language.Haskell.Exts.Annotated
-- | Parse a source file on disk, using the default parse mode.
parseFile :: FilePath -> IO (ParseResult (Module SrcSpanInfo))
-- | Parse a source file on disk, supplying a custom parse mode.
parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo))
-- | Parse a source file on disk, with an extra set of extensions to know
-- about on top of what the file itself declares.
parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult (Module SrcSpanInfo))
parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))
-- | Parse a source file from a string using the default parse mode.
parseFileContents :: String -> ParseResult (Module SrcSpanInfo)
-- | Parse a source file from a string using a custom parse mode.
parseFileContentsWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)
-- | Parse a source file from a string, with an extra set of extensions to
-- know about on top of what the file itself declares.
parseFileContentsWithExts :: [Extension] -> String -> ParseResult (Module SrcSpanInfo)
parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])
-- | Gather the extensions declared in LANGUAGE pragmas at the top of the
-- file. Returns Nothing if the parse of the pragmas fails.
readExtensions :: String -> Maybe [Extension]
-- | An umbrella module for the various functionality of the package. Also
-- provides some convenient functionality for dealing directly with
-- source files.
module Language.Haskell.Exts
-- | Parse a source file on disk, using the default parse mode.
parseFile :: FilePath -> IO (ParseResult Module)
-- | Parse a source file on disk, supplying a custom parse mode.
parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult Module)
-- | Parse a source file on disk, with an extra set of extensions to know
-- about on top of what the file itself declares.
parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult Module)
-- | Parse a source file from a string using the default parse mode.
parseFileContents :: String -> ParseResult Module
-- | Parse a source file from a string using a custom parse mode.
parseFileContentsWithMode :: ParseMode -> String -> ParseResult Module
-- | Gather the extensions declared in LANGUAGE pragmas at the top of the
-- file. Returns Nothing if the parse of the pragmas fails.
readExtensions :: String -> Maybe [Extension]