6.1.2. Overview of all language extensions¶
GHC supports these language extensions:
Extension | Description |
---|---|
Allow the user to write ambiguous types, and the type inference engine to infer them. |
|
Enable Applicative do-notation desugaring |
|
Enable arrow notation extension |
|
Enable bang patterns. |
|
Enable support for binary literals. |
|
Allow |
|
Enable the CAPI calling convention. |
|
Enable constrained class methods. |
|
Enable a kind of constraints. |
|
Enable the C preprocessor. |
|
Enable detection of complete user-supplied kind signatures. |
|
Enable datatype promotion. |
|
Allow contexts on |
|
Enable deep subsumption |
|
Enable default signatures. |
|
Enable deriving for any class. |
|
Enable deriving for the |
|
Enable deriving for the Foldable class.
Implied by |
|
Enable deriving for the Functor class.
Implied by |
|
Enable deriving for the Generic class. |
|
Enable deriving for the Lift class |
|
Enable deriving for the Traversable class.
Implies |
|
Enables deriving strategies. |
|
Enable deriving instances |
|
Enable record field disambiguation.
Implied by |
|
Allow definition of record types with identically-named fields. |
|
Allow empty case alternatives. |
|
Allow definition of empty |
|
Allow deriving instances of standard type classes for empty data types. |
|
Enable liberalised type synonyms. |
|
Enable explicit universal quantification.
Implied by |
|
Enable using the keyword |
|
Use GHCi's extended default rules in a normal module. |
|
Control visibility of field selector functions. |
|
Remove some restrictions on class contexts |
|
Enable flexible instances.
Implies |
|
Enable foreign function interface. |
|
Enable functional dependencies.
Implies |
|
Enable generalised algebraic data types.
Implies |
|
Enable generalised algebraic data type syntax. |
|
Enable newtype deriving. |
|
Use GHC’s set of default language extensions from 2021 |
|
Enable prim calling convention. Intended for internal use only. |
|
Use the Haskell 2010 language variant. |
|
Use the Haskell 98 language variant. |
|
Enable support for hexadecimal floating point literals. |
|
Enable Implicit Parameters. |
|
Don't implicitly |
|
|
|
Enable impredicative types.
Implies |
|
Enable incoherent instances.
Implies |
|
Enable instance signatures. |
|
Enable interruptible FFI. |
|
Enable kind signatures.
Implied by |
|
Enable lambda-case expressions. |
|
Use whitespace to determine whether the minus sign stands for negation or subtraction. |
|
Enable liberalised type synonyms. |
|
Enable linear types. |
|
Allow |
|
Enable monad comprehensions. |
|
Enable do not generalise local bindings.
Implied by |
|
Disable the monomorphism restriction. |
|
Enable multi parameter type classes.
Implied by |
|
Enable multi-way if-expressions. |
|
Enable record puns. |
|
Enable named wildcards. |
|
Enable support for negative literals. |
|
Allow nested contexts to be at the same indentation level as its enclosing context. |
|
Enable support for |
|
Deprecated, does nothing. nullary (no parameter) type
classes are now enabled using |
|
Enable support for 'fractional' integer literals. |
|
Enable support for numeric underscores. |
|
Enable overlapping instances. |
|
Enable overloaded labels. |
|
Enable overloaded lists. |
|
Record '.' syntax |
|
Record '.' syntax record updates |
|
Enable overloaded string literals. |
|
Enable package-qualified imports. |
|
Enable parallel list comprehensions. |
|
Enable partial type signatures. |
|
Disable pattern guards.
Implied by |
|
Enable pattern synonyms. |
|
Enable kind polymorphism.
Implies |
|
Enable postfix operators. |
|
Enable qualified do-notation desugaring. |
|
Allow |
|
Enable quasiquotation. |
|
Enable rank-2 types.
Synonym for |
|
Enable rank-N types.
Implied by |
|
Employ rebindable syntax.
Implies |
|
Enable record wildcards.
Implies |
|
Enable recursive do (mdo) notation. |
|
Enable role annotations. |
|
Enable the Safe Haskell Safe mode. |
|
Enable lexically-scoped type variables. |
|
Enable standalone deriving. |
|
Allow the use of standalone kind signatures. |
|
Treat |
|
Enable static pointers. |
|
Make bindings in the current module strict by default. |
|
Enable default strict datatype fields. |
|
Enable Template Haskell. |
|
Enable quotation subset of Template Haskell. |
|
Disable support for traditional record syntax
(as supported by Haskell 98) |
|
Enable generalised list comprehensions. |
|
Enable the Safe Haskell Trustworthy mode. |
|
Enable tuple sections. |
|
Enable type application syntax in terms, patterns and types. |
|
Enable type data declarations. |
|
Enable type families.
Implies |
|
Enable injective type families.
Implies |
|
Deprecated. Enable kind polymorphism and datatype promotion. |
|
Enable type operators.
Implies |
|
Enable type synonyms in instance heads.
Implied by |
|
Enable unboxed sums. |
|
Enable the use of unboxed tuple syntax. |
|
Enable undecidable instances. |
|
Allow all superclass constraints, including those that may result in non-termination of the typechecker. |
|
Enable unicode syntax. |
|
Enable unlifted data types. |
|
Enable unlifted FFI types |
|
Enable unlifted newtypes. |
|
Enable Safe Haskell Unsafe mode. |
|
Enable view patterns. |