A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Description | Stability | Neg Stability | Included from | Excluded from | Notes | Implied by | Implies | ||||||||||||||||||||||
2 | AllowAmbiguousTypes | Allow the user to write ambiguous types, and the type inference engine to infer them. | TBC: Experimental? | Stable | Usually better to use visible forall; unimplemented proposal to allow AMBIGUOUS pragmas instead | |||||||||||||||||||||||||
3 | AlternativeLayoutRule | Deprecated | Stable | Undocumented https://gitlab.haskell.org/ghc/ghc/-/issues/11359 | ||||||||||||||||||||||||||
4 | AlternativeLayoutRuleTransitional | Deprecated | Stable | Undocumented https://gitlab.haskell.org/ghc/ghc/-/issues/11359 | ||||||||||||||||||||||||||
5 | ApplicativeDo | Enable Applicative do-notation desugaring | Experimental | Stable | Proposed alternative ApplicativeComprehensions https://github.com/ghc-proposals/ghc-proposals/pull/526 and looks somewhat complex/buggy https://gitlab.haskell.org/ghc/ghc/-/issues/17768 | |||||||||||||||||||||||||
6 | Arrows | Enable arrow notation extension | Experimental | Stable | Longstanding bugs https://gitlab.haskell.org/ghc/ghc/-/issues/344 | |||||||||||||||||||||||||
7 | AutoDeriveTypeable | Deprecated; now default. Automatically derive Typeable for all user-defined datatypes | TBC | Deprecated | Always | Undocumented. Cannot be disabled since GHC 8.2 | ||||||||||||||||||||||||
8 | BangPatterns | Enable bang patterns. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
9 | BinaryLiterals | Enable support for binary literals. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
10 | BlockArguments | Allow do blocks and other constructs as function arguments. | Stable | Stable | ||||||||||||||||||||||||||
11 | CApiFFI | Enable the CAPI calling convention. | Stable | Stable | Candidate for GHC2024? | |||||||||||||||||||||||||
12 | ConstrainedClassMethods | Enable constrained class methods. | Stable | Stable | GHC2021 | MultiParamTypeClasses | ||||||||||||||||||||||||
13 | ConstraintKinds | Enable a kind of constraints. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
14 | CPP | Enable the C preprocessor. | Stable | Stable | ||||||||||||||||||||||||||
15 | CUSKs | Enable detection of complete user-supplied kind signatures. | Legacy | Stable | Haskell2010 | StandaloneKindSignatures is a better alternative | ||||||||||||||||||||||||
16 | DataKinds | Enable datatype promotion. | Stable | Stable | GHC2024 | TypeData is a partial alternative; proposal under review to split out TypeLevelLiterals | ||||||||||||||||||||||||
17 | DatatypeContexts | Allow contexts on data types. | Legacy | Stable | Haskell2010 | Command-line flag emits a deprecation warning already, but part of Haskell2010, so cannot be removed for now | ||||||||||||||||||||||||
18 | DeepSubsumption | Enable deep subsumption | Legacy | Stable | Haskell98 | GHC2021 | For backwards compatibility with pre-simplified subsumption code | |||||||||||||||||||||||
19 | DefaultSignatures | Enable default signatures. | Stable | Stable | Richard's proposal excludes from Stable2024 | |||||||||||||||||||||||||
20 | DeriveAnyClass | Enable deriving for any class. | Stable | Stable | Richard's proposal excludes from Stable2024 | |||||||||||||||||||||||||
21 | DeriveDataTypeable | Enable deriving for the Data class. | Stable | Stable | GHC2021 | Rename to DeriveData, since Typeable is now auto-derived? | ||||||||||||||||||||||||
22 | DeriveFoldable | Enable deriving for the Foldable class. | Stable | Stable | GHC2021 | DeriveTraversable | ||||||||||||||||||||||||
23 | DeriveFunctor | Enable deriving for the Functor class. | Stable | Stable | GHC2021 | DeriveTraversable | ||||||||||||||||||||||||
24 | DeriveGeneric | Enable deriving for the Generic class. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
25 | DeriveLift | Enable deriving for the Lift class | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
26 | DeriveTraversable | Enable deriving for the Traversable class. | Stable | Stable | GHC2021 | DeriveFunctor, DeriveFoldable | ||||||||||||||||||||||||
27 | DerivingStrategies | Enables deriving strategies. | Stable | Stable | GHC2024 | |||||||||||||||||||||||||
28 | DerivingVia | Enable deriving instances via types of the same runtime representation. | Stable | Stable | DerivingStrategies | |||||||||||||||||||||||||
29 | DisambiguateRecordFields | Enable record field disambiguation. | Stable | Stable | GHC2024 | RecordWildCards | ||||||||||||||||||||||||
30 | DoAndIfThenElse | Allow unindented if-then-else inside do notation | Stable | Legacy | Haskell2010 | Undocumented but part of Haskell2010 and later, so probably best to keep it (https://gitlab.haskell.org/ghc/ghc/-/issues/18631#note_540744) | ||||||||||||||||||||||||
31 | DoRec | TBC: Deprecated? | Stable | Undocumented, replaced by RecursiveDo | RecursiveDo | |||||||||||||||||||||||||
32 | DuplicateRecordFields | Allow definition of record types with identically-named fields. | TBC: Experimental? | Stable | Richard's proposal includes in Stable2024 | |||||||||||||||||||||||||
33 | EmptyCase | Allow empty case alternatives. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
34 | EmptyDataDecls | Allow definition of empty data types. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
35 | EmptyDataDeriving | Allow deriving instances of standard type classes for empty data types. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
36 | ExistentialQuantification | Allow existentially quantified type variables in types. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
37 | ExplicitForAll | Enable explicit universal quantification. | Stable | Stable | GHC2021 | ScopedTypeVariables, LiberalTypeSynonyms, RankNTypes, ExistentialQuantification | ||||||||||||||||||||||||
38 | ExplicitNamespaces | Enable using the keyword type to specify the namespace of entries in imports and exports (Explicit namespaces in import/export). | TBC: Stable? | Stable | GHC2024 | Proposals to add features (but backwards-compatible), still okay to be Stable? | TypeOperators, TypeFamilies | |||||||||||||||||||||||
39 | ExtendedDefaultRules | Use GHCi's extended default rules in a normal module. | Stable | Stable | On by default in GHCi | |||||||||||||||||||||||||
40 | ExtendedLiterals | Allows defining unboxed numeric primitive values through #Type suffixes | TBC: Experimental? | Stable | New in GHC 9.8. Richard's proposal includes in Stable2024 | |||||||||||||||||||||||||
41 | FieldSelectors | Control visibility of field selector functions. | Stable | TBC | Haskell98 | Richard proposes using NoFieldSelectors by default | ||||||||||||||||||||||||
42 | FlexibleContexts | Remove some restrictions on class contexts | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
43 | FlexibleInstances | Enable flexible instances. | Stable | Stable | GHC2021 | TypeSynonymInstances | ||||||||||||||||||||||||
44 | ForeignFunctionInterface | Enable foreign function interface. | Stable | Stable | Haskell2010 | |||||||||||||||||||||||||
45 | FunctionalDependencies | Enable functional dependencies. | TBC: Experimental? | Stable | Dark corners of FunDeps + MPTCs + overlapping instances should be Experimental because the semantics is not well-defined. But MPTCs are Stable, and overlapping instances are available without an extension, so that implies FunDeps need to be Experimental | MultiParamTypeClasses | ||||||||||||||||||||||||
46 | GADTs | Enable generalised algebraic data types. | Stable | Stable | GHC2024 | Not formally part of GHC2021, although GADTSyntax and ExistentialQuantification are | GADTSyntax, MonoLocalBinds | |||||||||||||||||||||||
47 | GADTSyntax | Enable generalised algebraic data type syntax. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
48 | GeneralisedNewtypeDeriving | Enable newtype deriving. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
49 | GHCForeignImportPrim | Enable prim calling convention. Intended for internal use only. | Experimental | Stable | Documentation states "This feature is not intended for use outside of the core libraries that come with GHC." Richard's proposal allows in Stable2024. | |||||||||||||||||||||||||
50 | HexFloatLiterals | Enable support for hexadecimal floating point literals. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
51 | ImplicitParams | Enable Implicit Parameters. | Stable | Stable | ||||||||||||||||||||||||||
52 | ImplicitPrelude | Don't implicitly import Prelude. | Stable | Stable | Haskell98 | (Negatively) RebindableSyntax | ||||||||||||||||||||||||
53 | ImportQualifiedPost | Allows the syntax import M qualified | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
54 | ImpredicativeTypes | Enable impredicative types. | Experimental | Stable | Richard's proposal allows in Stable2024 | RankNTypes | ||||||||||||||||||||||||
55 | IncoherentInstances | Enable incoherent instances. | Experimental | Stable | Mostly replaced by INCOHERENT pragmas, but still needed for given/wanted incoherence and role annotations on classes. Should be split and only partly Deprecated. Richard's proposal allows in Stable2024. | OverlappingInstances | ||||||||||||||||||||||||
56 | InstanceSigs | Enable instance signatures. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
57 | InterruptibleFFI | Enable interruptible FFI. | Stable | Stable | ||||||||||||||||||||||||||
58 | JavaScriptFFI | Experimental | Stable | Undocumented and doesn't do anything https://gitlab.haskell.org/ghc/ghc/-/issues/23940 | InterruptibleFFI | |||||||||||||||||||||||||
59 | KindSignatures | Enable kind signatures. | Stable | Stable | GHC2021 | TypeFamilies, PolyKinds | ||||||||||||||||||||||||
60 | LambdaCase | Enable lambda-case expressions. | Stable | Stable | GHC2024 | |||||||||||||||||||||||||
61 | LexicalNegation | Use whitespace to determine whether the minus sign stands for negation or subtraction. | TBC | Stable | ||||||||||||||||||||||||||
62 | LiberalTypeSynonyms | Enable liberalised type synonyms. | Stable | Stable | ||||||||||||||||||||||||||
63 | LinearTypes | Enable linear types. | Experimental | Stable | ||||||||||||||||||||||||||
64 | MagicHash | Allow # as a postfix modifier on identifiers. | Stable | Stable | ||||||||||||||||||||||||||
65 | MonadComprehensions | Enable monad comprehensions. | Stable | Stable | ||||||||||||||||||||||||||
66 | MonoLocalBinds | Do not generalise local bindings. | Stable | Legacy | GHC2024 | Not part of GHC2021 although ExistentialQuantification and GADTSyntax are. NoMonoLocalBinds is discouraged but remains Legacy due to widespread use | TypeFamilies, GADTs | |||||||||||||||||||||||
67 | MonomorphismRestriction | Disable the monomorphism restriction. | Stable | Stable | Haskell98 | Switched off in GHCi | ||||||||||||||||||||||||
68 | MultiParamTypeClasses | Enable multi parameter type classes. | Stable | Stable | GHC2021 | FunctionalDependencies | ConstrainedClassMethods | |||||||||||||||||||||||
69 | MultiWayIf | Enable multi-way if-expressions. | Stable | Stable | ||||||||||||||||||||||||||
70 | NamedFieldPuns | Enable record puns. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
71 | NamedWildCards | Enable named wildcards. | Stable | Stable | GHC2021 | Proposal to tweak design of wildcards, but part of GHC2021 so Stable | ||||||||||||||||||||||||
72 | NegativeLiterals | Enable support for negative literals. | TBC: Stable? | Stable | Is this being replaced by LexicalNegation? Status unclear | |||||||||||||||||||||||||
73 | NondecreasingIndentation | Allow nested contexts to be at the same indentation level as its enclosing context. | Legacy | Stable | Haskell98 | Haskell2010 | Documentation not very clear about status. Used by H98 only. Error messages include "Suggested fix: Perhaps you intended to use NondecreasingIndentation" when perhaps it should not be suggested? Richard excludes from Stable2024 | |||||||||||||||||||||||
74 | NPlusKPatterns | Enable support for n+k patterns. | Legacy | Stable | Haskell98 | |||||||||||||||||||||||||
75 | NullaryTypeClasses | Deprecated | Stable | Documentation claims "Deprecated, does nothing. nullary (no parameter) type classes are now enabled using MultiParamTypeClasses." but actually it does still enable nullary type classes. | ||||||||||||||||||||||||||
76 | NumDecimals | Enable support for 'fractional' integer literals. | Stable | Stable | ||||||||||||||||||||||||||
77 | NumericUnderscores | Enable support for numeric underscores. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
78 | OverlappingInstances | Enable overlapping instances. | Deprecated | Stable | Use OVERLAP* pragmas instead | |||||||||||||||||||||||||
79 | OverloadedLabels | Enable overloaded labels. | Stable | Stable | ||||||||||||||||||||||||||
80 | OverloadedLists | Enable overloaded lists. | Stable | Stable | ||||||||||||||||||||||||||
81 | OverloadedRecordDot | Record '.' syntax | Stable | Stable | ||||||||||||||||||||||||||
82 | OverloadedRecordUpdate | Record '.' syntax record updates | Experimental | Stable | Change to Experimental after implementation of https://github.com/ghc-proposals/ghc-proposals/pull/583 | |||||||||||||||||||||||||
83 | OverloadedStrings | Enable overloaded string literals. | Stable | Stable | ||||||||||||||||||||||||||
84 | PackageImports | Enable package-qualified imports. | TBC: Deprecated? | Stable | Unclear if this should be Legacy or Deprecated; see https://gitlab.haskell.org/ghc/ghc/-/issues/25025 and https://gitlab.haskell.org/ghc/ghc/-/issues/24227 | |||||||||||||||||||||||||
85 | ParallelArrays | Deprecated | Stable | Undocumented. Presumably a leftover of DPH. Only effect is enabling ParallelListComp. Enabled by base. | ParallelListComp | |||||||||||||||||||||||||
86 | ParallelListComp | Enable parallel list comprehensions. | Stable | Stable | ||||||||||||||||||||||||||
87 | PartialTypeSignatures | Enable partial type signatures. | Stable | Stable | ||||||||||||||||||||||||||
88 | PatternGuards | Enable pattern guards. | Stable | Stable | Haskell98 | |||||||||||||||||||||||||
89 | PatternSignatures | Deprecated synonym for ScopedTypeVariables | Experimental | Stable | Changes proposed https://github.com/ghc-proposals/ghc-proposals/pull/608 | ScopedTypeVariables | ||||||||||||||||||||||||
90 | PatternSynonyms | Enable pattern synonyms. | Stable | Stable | ||||||||||||||||||||||||||
91 | PolyKinds | Enable kind polymorphism. | Stable | Stable | GHC2021 | KindSignatures | ||||||||||||||||||||||||
92 | PolymorphicComponents | Deprecated | Stable | Undocumented, synonym for RankNTypes | ||||||||||||||||||||||||||
93 | PostfixOperators | Enable postfix operators. | Stable | Stable | GHC2021 | |||||||||||||||||||||||||
94 | QualifiedDo | Enable qualified do-notation desugaring. | TBC: Experimental? | Stable | ||||||||||||||||||||||||||
95 | QuantifiedConstraints | Allow forall quantifiers in constraints. | TBC: Experimental? | Stable | ||||||||||||||||||||||||||
96 | QuasiQuotes | Enable quasiquotation. | TBC: Stable? | Stable | Ideas to change quasiquotes to support antiquotation | |||||||||||||||||||||||||
97 | Rank2Types | Enable rank-2 types. Synonym for RankNTypes. | Deprecated | Stable | Rank 2 has type inference properties that rank N doesn't, but this doesn't actually enable rank-2 polymorphism only | |||||||||||||||||||||||||
98 | RankNTypes | Enable rank-N types. | Stable | Stable | GHC2021 | ImpredicativeTypes | ExplicitForAll | |||||||||||||||||||||||
99 | RebindableSyntax | Employ rebindable syntax. | Experimental | Stable | Documentation is quite pessimistic about stability but is this justified since the rewrite to expand RebindableSyntax in the renamer? From https://gitlab.haskell.org/ghc/ghc/-/wikis/Rebindable-syntax it looks like there is still stabilisation work ongoing. | NoImplicitPrelude | ||||||||||||||||||||||||
100 | RecordPuns | Obsolete name for NamedFieldPuns | Deprecated | Stable | https://gitlab.haskell.org/ghc/ghc/-/issues/2320 | NamedFieldPuns |