| Version 23 (modified by john@…, 7 years ago) |
|---|
Known Haskell Extensions
Links
- Please see the explanation and template for writing descriptions of these extensions.
- Cabal extension list
- GHC extension related options
- [source:/ExtensionTables.hs Script] to generate the original tables
- GHC survey results (including a large list of Haskell extensions)
- Results of John Hughes' Haskell survey (also lists many extensions)
Support Matrix
| Extension Name | GHC | NHC | HUGS | JHC |
| ForeignFunctionInterface | True | True | True | True |
| RecursiveDo | True | False | True | False |
| ParallelListComp | True | False | True | False |
| PatternGuards | True | False | False | False |
| Arrows | True | False | False | False |
| ScopedTypeVariables | True | False | True | False |
| PolymorphicComponents | True | False | True | False |
| Rank2Types | True | False | True | False |
| RankNTypes | True | False | False | False |
| ExistentialQuantification | True | True | True | False |
| NewtypeDeriving | True | False | False | True |
| ImplicitParams | True | False | True | False |
| LinearImplicitParams | True | False | False | False |
| EmptyDataDecls | True | True | True | True |
| NoMonomorphismRestriction | True | True | False | True |
| FlexibleContexts | True | False | True | ? |
| FlexibleInstances | True | False | True | ? |
| TypeSynonymInstances | True | False | True | True |
| MultiParamTypeClasses | True | False | True | False |
| OverlappingInstances | True | False | True | False |
| IncoherentInstances | True | False | True | False |
| UndecidableInstances | True | False | False | False |
| FunctionalDependencies | True | False | True | False |
| AssociatedTypes | False | False | False | False |
| CPP? | True | True | True | True |
| TemplateHaskell? | True | False | False | False |
| InlinePhase? | True | False | False | False |
| ContextStack? | True | False | False | False |
| Generics? | True | False | False | False |
| NoImplicitPrelude? | True | False | False | True |
| NamedFieldPuns? | False | True | False | False |
| ExtensibleRecords? | False | False | True | False |
| RestrictedTypeSynonyms? | False | False | True | False |
| HereDocuments? | False | False | True | False |
| Assertions? | True | ? | False | True |
| Concurrency | True | False | Coop | Poor |
| KindAnnotations | True | False | False | True |
| GADTs | True | False | False | False |
| InfixTypeConstructors | True | False | False | True |
| LiberalTypeSynonyms | True | False | False | True |
| RebindableSyntax? | True | False | False | Some |
| RecursiveModules? | Partial | ? | False | True |
| RewriteRules? | True | False | False | Int |
| UnboxedTypes? | True | False | False | Int |
| CoinductiveDictionaries? | ? | False | False | False |
| PartialTypeSigs | False | False | False | False |
| Impredicativity? | ? | False | False | False |
| ExplicitDictionaries? | False | False | False | False |
| KindPolymorphism? | False | False | False | False |
| DataKinds? | False | False | False | False |
| MagicUnderscore | False | False | False | True |
| NondecreasingIndentation | Partial | ? | False | ? |
| ClassAliases? | False | False | False | False |
| HierarchicalModules | True | True | True | True |
| DottedHierarchicalModules | False | False | False | True |
Extensions supported by two compilers
- ForeignFunctionInterface
- RecursiveDo
- ParallelListComp
- ScopedTypeVariables
- PolymorphicComponents
- Rank2Types
- ExistentialQuantification
- ImplicitParams
- EmptyDataDecls
- NoMonomorphismRestriction
- FlexibleContexts
- FlexibleInstances
- TypeSynonymInstances
- MultiParamTypeClasses
- OverlappingInstances
- IncoherentInstances
- FunctionalDependencies
- CPP
- HierarchicalModules
Extensions used in fptools
| Those mentioned in library .cabal files | |
| CPP | 11 libraries |
| ForeignFunctionInterface | 4 |
| MultiParamTypeClasses | 3 |
| OverlappingInstances | 1 |
| FunctionalDependencies | 1 |
| Additional extensions mentioned in source file "Portability" field | |
| Concurrency | 3 libraries |
| Local universal quantification | 3 |
| Extended exceptions | >1 |
| Existentially quantified data constructors | 1 |
| STM | 1 |
