Right now Haskell Devs put a lot of efforts to categorize GHC extensions.
- Language extensions will be classified into the following categories accepted Proposal
Add categorization of language extensions pull request to almost accepted (but still in “Pending committee review” stage) proposal- UPD: Add categorization of language extensions accepted Proposal
Some of extensions are “Stable” and it is recommended to use them in code.
But the rest of them are marked as “Experimental“, “Deprecated“ and even “Legacy“.
“Deprecated“ and “Legacy“ are not recommended to use, “Experimental” ones you could use , understanding all risks.
But …. why the extension is not recommended and what risks have some extensions?
I think, most of Haskell users (and some Devs) don’t know why or don’t remember why.
And this is bad for uses, because they can’t comprehend which risk they have in their code.
And this is bad for Devs too. Because they forget time to time what they try to resolve, and no longer even try write new solutions to old problems.
I recommend to add additional categorizations, WHY the extension is not “Stable”. This benefits both Devs and users.
This topic tries to collect all “whys” with “proofs” (pieces of code with explanations).
Please post here what you remember!!!
Some answers could be:
- Fresh / LongLived - is an extension is Fresh (like
MultilineStrings
) - Shifts / Fixed - is an extension frequently changes (like
TemplateHaskell
) - NonSafe / Correct - is an extension allow to write wrong code (like
OverlappingInstances
) - NonFinished / Total - does an extension cover all cases or not (like
Arrows
) - Narrow Specialized / UniversalUse - is an extension is narrow specialized (like
TransformListComp
) - Ineffective / Effective - is an extension use effective ways to compute (like
ApplicativeDo
) - SubSetOfCases / SetOfCases - is an extension covers just a subset of cases (like
Rank2Types
) - AntiPattern / GoodUse - is an extension use anti-pattern (which makes coding harder) (like
DatatypeContexts
) - … maybe some other
If we collect enough evidence WHY the extension is not “Stable”, I’ll add all of them in one Proposal for additional categorization.