|
|
# Known Haskell 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></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>[ExistentialQuantification](existential-quantification)</th>
|
|
|
<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></tr>
|
|
|
<tr><th>[FlexibleInstances](flexible-instances)</th>
|
|
|
<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></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></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></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></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
|
|
|
|
|
|
- [OverlappingInstances](overlapping-instances)
|
|
|
- [RecursiveDo](recursive-do)
|
|
|
- [ParallelListComp](parallel-list-comp)
|
|
|
- [MultiParamTypeClasses](multi-param-type-classes)
|
|
|
- [NoMonomorphismRestriction](no-monomorphism-restriction)
|
|
|
- [FunctionalDependencies](functional-dependencies)
|
|
|
- RankNTypes
|
|
|
- [PolymorphicComponents](polymorphic-components)
|
|
|
- [ExistentialQuantification](existential-quantification)
|
|
|
- [ScopedTypeVariables](scoped-type-variables)
|
|
|
- [ImplicitParams](implicit-params)
|
|
|
- [FlexibleContexts](flexible-contexts)
|
|
|
- [FlexibleInstances](flexible-instances)
|
|
|
- [EmptyDataDecls](empty-data-decls)
|
|
|
- CPP
|
|
|
- [ForeignFunctionInterface](foreign-function-interface)
|
|
|
|
|
|
## 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. |