Я думаю, что более подходящей категоризацией было бы разделить ее на конвейер компилятора:
Синтаксические расширения
- -XMagicHash
- -XUnicodeSyntax
- -XNewQualifiedOperators
- -XViewPatterns
- -XNPlusKPatterns
- -XDoRec
- -XTransformListComp
- -XPostfixOperators
- -XTupleSections
- -XDisambiguateRecordFields
- -XNamedFieldPuns
- -XRecordWildCards1034 *
- -XExplicitForAll
- -XKindSignatures
- ...
Тип системных расширений
- -XUnboxedTuples
- -XLiberalTypeSynonyms
- -XGADTs
- -XMultiParamTypeClasses
- -XF flexContexts
- -XConstrainedClassXOverlappingInstances и -XIncoherentInstances
- -XTypeFamilies
- -XImplicitПараметры
Межсекторные расширения
- -XTemplateHaskell
- -XForeignFunctionInterface
Оптимизация
- -fenable-rewrite-rules
- -fspec-constr
- -O2
Расширения генерации кода
Расширения времени выполнения
Что вы думаете?Не каждый флаг либо (а) определим в терминах существующих конструкций, либо (б) новой частью компилятора.Это более тонко.
Есть также много других расширений, посмотрите, можете ли вы классифицировать их в этой форме.