HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulehaskell-src-1.0.4.1Haskell98

Language.Haskell.Syntax

A suite of datatypes describing the abstract syntax of Haskell 98 plus a few extensions:

  • multi-parameter type classes

  • parameters of type class assertions are unrestricted

For GHC, we also derive Typeable and Data for all types.

  • 33 types
  • 16 values

Modules

5 declarations
datadata HsExportSpec
#

Export specification.

Constructors

Instances4Eq, Data, Show, Pretty
datadata HsImportDecl
#

Import declaration.

Constructors

Instances4Eq, Data, Show, Pretty
datadata HsImportSpec
#

Import specification.

Constructors

  • HsIVar HsName

    Variable.

  • HsIAbs HsName

    T: The name of a class, datatype or type synonym.

  • HsIThingAll HsName

    T(..): A class imported with all of its methods, or a datatype imported with all of its constructors.

  • HsIThingWith HsName [HsCName]

    T(C_1,...,C_n): A class imported with some of its methods, or a datatype imported with some of its constructors.

Instances4Eq, Data, Show, Pretty
datadata HsAssoc
#

Associativity of an operator.

Constructors

  • HsAssocNone

    Non-associative operator (declared with infix).

  • HsAssocLeft

    Left-associative operator (declared with infixl).

  • HsAssocRight

    Right-associative operator (declared with infixr).

Instances4Eq, Data, Show, Pretty
  • Eq HsAssocDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsAssocDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsAssocDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsAssocDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Declarations

7 declarations
datadata HsDecl
#
Instances4Eq, Data, Show, Pretty
  • Eq HsDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsConDecl
#

Declaration of a data constructor.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsConDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsConDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsConDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsConDeclDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsBangType
#

The type of a constructor argument or field, optionally including a strictness annotation.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsBangTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsBangTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsBangTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsBangTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsRhs
#

The right hand side of a function or pattern binding.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsRhsDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsRhsDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsRhsDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsRhsDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsSafety
#

Safety level for invoking a foreign entity.

Constructors

  • HsSafe

    Call may generate callbacks.

  • HsUnsafe

    Call will not generate callbacks.

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsSafetyDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsSafetyDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord HsSafetyDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsSafetyDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsSafetyDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Class Assertions and Contexts

3 declarations
typetype HsAsst = (HsQName, [HsType])
#

Class assertions. In Haskell 98, the argument would be a tyvar, but this definition allows multiple parameters, and allows them to be types.

Types

1 declaration
datadata HsType
#

Haskell types and type constructors.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsTypeDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Expressions

6 declarations
datadata HsExp
#

Haskell expressions.

Notes:

  • Because it is difficult for parsers to distinguish patterns from expressions, they typically parse them in the same way and then check that they have the appropriate form. Hence the expression type includes some forms that are found only in patterns. After these checks, these constructors should not be used.

  • The parser does not take precedence and associativity into account, so it will leave HsInfixApps associated to the left.

  • The Pretty instance for HsExp does not add parentheses in printing.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsExpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsExpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsExpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsExpDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsStmt
#

This type represents both stmt in a do-expression, and qual in a list comprehension.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsStmtDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsStmtDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsStmtDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsStmtDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsAlt
#

An alt in a case expression.

Instances4Eq, Data, Show, Pretty
  • Eq HsAltDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsAltDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsAltDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsAltDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Patterns

2 declarations
datadata HsPat
#

A pattern, to be matched against a value.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsPatDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsPatDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsPatDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsPatDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Literals

1 declaration
datadata HsLiteral
#

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.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsLiteralDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsLiteralDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsLiteralDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsLiteralDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Variables, Constructors and Operators

7 declarations
newtypenewtype Module
#

The name of a Haskell module.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq ModuleDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data ModuleDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord ModuleDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show ModuleDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty ModuleDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsQName
#

This type is used to represent qualified variables, and also qualified constructors.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsQNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsQNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord HsQNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsQNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsQNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsName
#

This type is used to represent variables, and also constructors.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord HsNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsQOp
#

Possibly qualified infix operators (qop), appearing in expressions.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsQOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsQOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord HsQOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsQOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsQOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsOp
#

Operators, appearing in infix declarations.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord HsOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsOpDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty
datadata HsSpecialCon
#

Constructors with special syntax. These names are never qualified, and always refer to builtin type or data constructors.

Constructors

Instances4Eq, Data, Ord, Show
datadata HsCName
#

A name (cname) of a component of a class or data type in an import or export specification.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsCNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Data HsCNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Ord HsCNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Show HsCNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Syntax
  • Pretty HsCNameDefined in haskell-src-1.0.4.1 · Language.Haskell.Pretty

Builtin names

0 declarations

Modules

Main function of a program

Constructors

Type constructors

Source coordinates

1 declaration