HORIZON HASKELLDocslts/ghc-10.0.x8fef28d2026-11-02Search packagesCtrl K
Theme: |

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8fef28d · 2026-11-02

Modulehaskell-src-1.0.4.2Haskell98

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 Data for all types.

Contents
  1. Modules
  2. Declarations
  3. Class Assertions and Contexts
  4. Types
  5. Expressions
  6. Patterns
  7. Literals
  8. Variables, Constructors and Operators
  9. Builtin names
  10. Modules
  11. Main function of a program
  12. Constructors
  13. Type constructors
  14. Source coordinates
Synopsis

Modules

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.2 · Language.Haskell.Syntax
  • Data HsAssocDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsAssocDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsAssocDefined in haskell-src-1.0.4.2 · Language.Haskell.Pretty

Declarations

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

Declaration of a data constructor.

Constructors

Instances4Eq, Data, Show, Pretty
  • Eq HsConDeclDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Data HsConDeclDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsConDeclDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsConDeclDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsBangTypeDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsBangTypeDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsBangTypeDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsRhsDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsRhsDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsRhsDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsSafetyDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord HsSafetyDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsSafetyDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsSafetyDefined in haskell-src-1.0.4.2 · Language.Haskell.Pretty

Class Assertions and Contexts

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

datadata HsType

Haskell types and type constructors.

Constructors

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

Expressions

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.2 · Language.Haskell.Syntax
  • Data HsExpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsExpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsExpDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsStmtDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsStmtDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsStmtDefined in haskell-src-1.0.4.2 · Language.Haskell.Pretty

Patterns

datadata HsPat

A pattern, to be matched against a value.

Constructors

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

Literals

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.2 · Language.Haskell.Syntax
  • Data HsLiteralDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsLiteralDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsLiteralDefined in haskell-src-1.0.4.2 · Language.Haskell.Pretty

Variables, Constructors and Operators

newtypenewtype Module

The name of a Haskell module.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq ModuleDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Data ModuleDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord ModuleDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show ModuleDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty ModuleDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsQNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord HsQNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsQNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsQNameDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord HsNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsNameDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsQOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord HsQOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsQOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsQOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Pretty
datadata HsOp

Operators, appearing in infix declarations.

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq HsOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Data HsOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord HsOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsOpDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsOpDefined in haskell-src-1.0.4.2 · 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.2 · Language.Haskell.Syntax
  • Data HsCNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Ord HsCNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Show HsCNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Syntax
  • Pretty HsCNameDefined in haskell-src-1.0.4.2 · Language.Haskell.Pretty

Builtin names

Modules

Main function of a program

Constructors

Type constructors

Source coordinates