|
|
# Known Haskell Extensions
|
|
|
|
|
|
## Links
|
|
|
|
|
|
- Please see the [explanation and template](extension-description-howto) for writing descriptions of these extensions.
|
|
|
- [ExtensionsExperiment](extensions-experiment) is a summary of experiments run on the hackage libraries.
|
|
|
- [ Cabal extension list](http://www.haskell.org/ghc/docs/latest/html/libraries/Cabal/Distribution-Extension.html)
|
|
|
- [ GHC extension related options](http://www.haskell.org/ghc/docs/latest/html/users_guide/ghc-language-features.html#options-language)
|
|
|
- Script to generate the original tables
|
|
|
- [ GHC survey results](http://www.haskell.org/ghc/survey2005/) (including a large list of Haskell extensions)
|
|
|
- [ Results of John Hughes' Haskell survey](http://www.cs.chalmers.se/~rjmh/Wash/Survey/Survey.cgi) (also lists many extensions)
|
|
|
|
|
|
[ The list can be found here](http://www.haskell.org/ghc/docs/latest/html/libraries/Cabal/Distribution-Extension.html)
|
|
|
|
|
|
|
|
|
## Support Matrix
|
|
|
|
|
|
<table><tr><th> Extension Name </th>
|
|
|
<th> GHC </th>
|
|
|
<th> NHC </th>
|
|
|
<th> HUGS </th>
|
|
|
<th> JHC </th>
|
|
|
<th> Tickets
|
|
|
|
|
|
<table><tr><th>Extension Name</th>
|
|
|
<th>GHC</th>
|
|
|
<th>NHC</th>
|
|
|
<th>HUGS
|
|
|
</th></tr>
|
|
|
<tr><th>[OverlappingInstances](overlapping-instances)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[RecursiveDo](recursive-do)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[ParallelListComp](parallel-list-comp)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[MultiParamTypeClasses](multi-param-type-classes)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[NoMonomorphismRestriction](no-monomorphism-restriction)</th>
|
|
|
<th>True</th>
|
|
|
<th>True</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>[FunctionalDependencies](functional-dependencies)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>RankNTypes</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[PolymorphicComponents](polymorphic-components)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[AssociatedTypes](associated-types)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#14](https://gitlab.haskell.org//haskell/prime/issues/14), [\#90](https://gitlab.haskell.org//haskell/prime/issues/90)</th></tr>
|
|
|
<tr><th>ClassAliases?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>CoinductiveDictionaries?</th>
|
|
|
<th> ? </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>ContextStack?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>DataKinds?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[DoAndIfThenElse](do-and-if-then-else)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#23](https://gitlab.haskell.org//haskell/prime/issues/23)</th></tr>
|
|
|
<tr><th>[DottedHierarchicalModules](dotted-hierarchical-modules)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[EmptyDataDecls](empty-data-decls)</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#25](https://gitlab.haskell.org//haskell/prime/issues/25)</th></tr>
|
|
|
<tr><th>[ExistentialQuantification](existential-quantification)</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#26](https://gitlab.haskell.org//haskell/prime/issues/26)</th></tr>
|
|
|
<tr><th>[ExistentialQuantifier](existential-quantifier)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#26](https://gitlab.haskell.org//haskell/prime/issues/26)</th></tr>
|
|
|
<tr><th>ExplicitDictionaries?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>ExtensibleRecords?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<th>True</th>
|
|
|
<th>True</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[ScopedTypeVariables](scoped-type-variables)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[ImplicitParams](implicit-params)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[FlexibleContexts](flexible-contexts)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#31](https://gitlab.haskell.org//haskell/prime/issues/31)</th></tr>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[FlexibleInstances](flexible-instances)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#32](https://gitlab.haskell.org//haskell/prime/issues/32)</th></tr>
|
|
|
<tr><th>[ForeignData](foreign-data)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#34](https://gitlab.haskell.org//haskell/prime/issues/34)</th></tr>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[EmptyDataDecls](empty-data-decls)</th>
|
|
|
<th>True</th>
|
|
|
<th>True</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>CPP</th>
|
|
|
<th>True</th>
|
|
|
<th>True</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>[TypeSynonymInstances](type-synonym-instances)</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>TemplateHaskell?</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>[ForeignFunctionInterface](foreign-function-interface)</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#35](https://gitlab.haskell.org//haskell/prime/issues/35)</th></tr>
|
|
|
<tr><th>[FunctionalDependencies](functional-dependencies)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#36](https://gitlab.haskell.org//haskell/prime/issues/36), [\#90](https://gitlab.haskell.org//haskell/prime/issues/90)</th></tr>
|
|
|
<tr><th>HereDocuments?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[HierarchicalModules](hierarchical-modules)</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#24](https://gitlab.haskell.org//haskell/prime/issues/24)</th></tr>
|
|
|
<tr><th>[ImplicitParams](implicit-params)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#38](https://gitlab.haskell.org//haskell/prime/issues/38)</th></tr>
|
|
|
<tr><th>[IncoherentInstances](incoherent-instances)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#40](https://gitlab.haskell.org//haskell/prime/issues/40), [\#54](https://gitlab.haskell.org//haskell/prime/issues/54)</th></tr>
|
|
|
<tr><th>[InfixTypeConstructors](infix-type-constructors)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#78](https://gitlab.haskell.org//haskell/prime/issues/78)</th></tr>
|
|
|
<th>True</th>
|
|
|
<th>True</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>AllowOverlappingInstances?</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>AllowUndecidableInstances?</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>AllowIncoherentInstances?</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>InlinePhase?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[KindAnnotations](kind-annotations)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#84](https://gitlab.haskell.org//haskell/prime/issues/84)</th></tr>
|
|
|
<tr><th>KindPolymorphism?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[LambdaCase](lambda-case)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#41](https://gitlab.haskell.org//haskell/prime/issues/41)</th></tr>
|
|
|
<tr><th>[LiberalTypeSynonyms](liberal-type-synonyms)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#102](https://gitlab.haskell.org//haskell/prime/issues/102)</th></tr>
|
|
|
<tr><th>[LinearImplicitParams](linear-implicit-params)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#43](https://gitlab.haskell.org//haskell/prime/issues/43)</th></tr>
|
|
|
<tr><th>[MagicUnderscore](magic-underscore)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#44](https://gitlab.haskell.org//haskell/prime/issues/44)</th></tr>
|
|
|
<tr><th>[MultiParamTypeClasses](multi-param-type-classes)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#49](https://gitlab.haskell.org//haskell/prime/issues/49), [\#90](https://gitlab.haskell.org//haskell/prime/issues/90)</th></tr>
|
|
|
<tr><th>[MultiWayIf](multi-way-if)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#41](https://gitlab.haskell.org//haskell/prime/issues/41), [\#77](https://gitlab.haskell.org//haskell/prime/issues/77)</th></tr>
|
|
|
<tr><th>NamedFieldPuns?</th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#136](https://gitlab.haskell.org//haskell/prime/issues/136)</th></tr>
|
|
|
<tr><th>[NewtypeDeriving](newtype-deriving)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#22](https://gitlab.haskell.org//haskell/prime/issues/22), [\#52](https://gitlab.haskell.org//haskell/prime/issues/52)</th></tr>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>ContextStack?</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>Arrows</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>Generics</th>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>NoImplicitPrelude?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#144](https://gitlab.haskell.org//haskell/prime/issues/144)</th></tr>
|
|
|
<tr><th>[NoMonomorphismRestriction](monomorphism-restriction)</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#131](https://gitlab.haskell.org//haskell/prime/issues/131)[\#80](https://gitlab.haskell.org//haskell/prime/issues/80), [\#131](https://gitlab.haskell.org//haskell/prime/issues/131)</th></tr>
|
|
|
<tr><th>[NondecreasingIndentation](nondecreasing-indentation)</th>
|
|
|
<th> True </th>
|
|
|
<th> ? </th>
|
|
|
<th> True </th>
|
|
|
<th> ? </th>
|
|
|
<th>[\#53](https://gitlab.haskell.org//haskell/prime/issues/53)</th></tr>
|
|
|
<tr><th>[OverlappingInstances](overlapping-instances)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#54](https://gitlab.haskell.org//haskell/prime/issues/54)</th></tr>
|
|
|
<tr><th>[ParallelListComp](parallel-list-comp)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#55](https://gitlab.haskell.org//haskell/prime/issues/55)</th></tr>
|
|
|
<tr><th>[PartialTypeSigs](partial-type-sigs)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#40](https://gitlab.haskell.org//haskell/prime/issues/40)</th></tr>
|
|
|
<tr><th>[PatternGuards](pattern-guards)</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#56](https://gitlab.haskell.org//haskell/prime/issues/56)</th></tr>
|
|
|
<tr><th>[PolymorphicComponents](polymorphic-components)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#57](https://gitlab.haskell.org//haskell/prime/issues/57)</th></tr>
|
|
|
<tr><th>RebindableSyntax?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> Some </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[RecursiveDo](recursive-do)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#64](https://gitlab.haskell.org//haskell/prime/issues/64)</th></tr>
|
|
|
<tr><th>RecursiveModules?</th>
|
|
|
<th> Partial </th>
|
|
|
<th> Partial </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>No results</th></tr>
|
|
|
<th>True</th>
|
|
|
<th>False</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>NamedFieldPuns?</th>
|
|
|
<th>False</th>
|
|
|
<th>True</th>
|
|
|
<th>False
|
|
|
</th></tr>
|
|
|
<tr><th>ExtensibleRecords?</th>
|
|
|
<th>False</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>RestrictedTypeSynonyms?</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>RewriteRules?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> Int </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[ScopedTypeVariables](scoped-type-variables)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#67](https://gitlab.haskell.org//haskell/prime/issues/67), [\#81](https://gitlab.haskell.org//haskell/prime/issues/81)</th></tr>
|
|
|
<tr><th>TemplateHaskell?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[TypeSynonymInstances](type-synonym-instances)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#70](https://gitlab.haskell.org//haskell/prime/issues/70)</th></tr>
|
|
|
<tr><th>UnboxedTypes?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> Internal </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[UndecidableInstances](undecidable-instances)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#71](https://gitlab.haskell.org//haskell/prime/issues/71)</th></tr>
|
|
|
<tr><th>[Views](views)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#73](https://gitlab.haskell.org//haskell/prime/issues/73), [\#114](https://gitlab.haskell.org//haskell/prime/issues/114)</th></tr>
|
|
|
<tr><th>[Arrows](arrows)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#13](https://gitlab.haskell.org//haskell/prime/issues/13)</th></tr>
|
|
|
<tr><th>Assertions?</th>
|
|
|
<th> True </th>
|
|
|
<th> ? </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#107](https://gitlab.haskell.org//haskell/prime/issues/107)</th></tr>
|
|
|
<tr><th>[Concurrency](concurrency)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> Coop </th>
|
|
|
<th> Poor </th>
|
|
|
<th>[\#74](https://gitlab.haskell.org//haskell/prime/issues/74)</th></tr>
|
|
|
<tr><th>CPP?</th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>No results</th></tr>
|
|
|
<tr><th>[GADTs](gad-ts)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#37](https://gitlab.haskell.org//haskell/prime/issues/37)</th></tr>
|
|
|
<tr><th>Generics?</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#88](https://gitlab.haskell.org//haskell/prime/issues/88)</th></tr>
|
|
|
<tr><th>Impredicativity?</th>
|
|
|
<th> ? </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> Mostly </th>
|
|
|
<th>[\#87](https://gitlab.haskell.org//haskell/prime/issues/87)</th></tr>
|
|
|
<tr><th>[Rank2Types](rank2-types)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#60](https://gitlab.haskell.org//haskell/prime/issues/60)</th></tr>
|
|
|
<tr><th>[RankNTypes](rank-n-types)</th>
|
|
|
<th> True </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> True </th>
|
|
|
<th>[\#60](https://gitlab.haskell.org//haskell/prime/issues/60)</th></tr>
|
|
|
<tr><th>[AllowImportAnywhere](allow-import-anywhere)</th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th> False </th>
|
|
|
<th>[\#82](https://gitlab.haskell.org//haskell/prime/issues/82)</th></tr></table>
|
|
|
<th>False</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>HereDocuments?</th>
|
|
|
<th>False</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr>
|
|
|
<tr><th>UnsafeOverlappingInstances?</th>
|
|
|
<th>False</th>
|
|
|
<th>False</th>
|
|
|
<th>True
|
|
|
</th></tr></table>
|
|
|
|
|
|
|
|
|
## Extensions supported by two compilers
|
|
|
|
|
|
- [HierarchicalModules](hierarchical-modules)
|
|
|
- [ForeignFunctionInterface](foreign-function-interface)
|
|
|
|
|
|
- [OverlappingInstances](overlapping-instances)
|
|
|
- [RecursiveDo](recursive-do)
|
|
|
- [ParallelListComp](parallel-list-comp)
|
|
|
- [ScopedTypeVariables](scoped-type-variables)
|
|
|
- [MultiParamTypeClasses](multi-param-type-classes)
|
|
|
- [NoMonomorphismRestriction](no-monomorphism-restriction)
|
|
|
- [FunctionalDependencies](functional-dependencies)
|
|
|
- RankNTypes
|
|
|
- [PolymorphicComponents](polymorphic-components)
|
|
|
- [Rank2Types](rank2-types)
|
|
|
- [ExistentialQuantification](existential-quantification)
|
|
|
- [ScopedTypeVariables](scoped-type-variables)
|
|
|
- [ImplicitParams](implicit-params)
|
|
|
- [EmptyDataDecls](empty-data-decls)
|
|
|
- [NoMonomorphismRestriction](monomorphism-restriction)
|
|
|
- [NondecreasingIndentation](nondecreasing-indentation)
|
|
|
- [FlexibleContexts](flexible-contexts)
|
|
|
- [FlexibleInstances](flexible-instances)
|
|
|
- [TypeSynonymInstances](type-synonym-instances)
|
|
|
- [MultiParamTypeClasses](multi-param-type-classes)
|
|
|
- [OverlappingInstances](overlapping-instances)
|
|
|
- [IncoherentInstances](incoherent-instances)
|
|
|
- [FunctionalDependencies](functional-dependencies)
|
|
|
- [PatternGuards](pattern-guards)
|
|
|
- [EmptyDataDecls](empty-data-decls)
|
|
|
- CPP
|
|
|
- [ O'Haskell](http://www.cs.chalmers.se/~nordland/ohaskell/)
|
|
|
- [ForeignFunctionInterface](foreign-function-interface)
|
|
|
|
|
|
## Extensions used in fptools
|
|
|
## How tables were produced
|
|
|
|
|
|
|
|
|
|
|
|
Isaac used this script to produce the original tables. If you modify this list, that may mean that [ the Distribution.Extension module](http://www.haskell.org/ghc/docs/latest/html/libraries/Cabal/Distribution-Extension.html) is wrong or incomplete! Feel free to modify the script or this page.
|
|
|
|
|
|
<table><tr><th>**Those mentioned in library .cabal files**</th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> CPP </th>
|
|
|
<th> 11 libraries
|
|
|
</th></tr>
|
|
|
<tr><th>[ForeignFunctionInterface](foreign-function-interface)</th>
|
|
|
<th> 4
|
|
|
</th></tr>
|
|
|
<tr><th>[MultiParamTypeClasses](multi-param-type-classes)</th>
|
|
|
<th> 3
|
|
|
</th></tr>
|
|
|
<tr><th>[OverlappingInstances](overlapping-instances)</th>
|
|
|
<th> 1
|
|
|
</th></tr>
|
|
|
<tr><th>[FunctionalDependencies](functional-dependencies)</th>
|
|
|
<th> 1
|
|
|
</th></tr></table>
|
|
|
|
|
|
<table><tr><th>**Additional extensions mentioned in source file "Portability" field**</th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> Concurrency </th>
|
|
|
<th> 3 libraries
|
|
|
</th></tr>
|
|
|
<tr><th> Local universal quantification </th>
|
|
|
<th> 3
|
|
|
</th></tr>
|
|
|
<tr><th> Extended exceptions </th>
|
|
|
<th> \>1
|
|
|
</th></tr>
|
|
|
<tr><th> Existentially quantified data constructors </th>
|
|
|
<th> 1
|
|
|
</th></tr>
|
|
|
<tr><th> STM </th>
|
|
|
<th> 1
|
|
|
</th></tr></table> |
|
|
\ No newline at end of file |