creo una clasificación más apropiada sería dividirlo por el oleoducto compilador:
extensiones sintácticas
- -XMagicHash
- -XUnicodeSyntax
- -XNewQualifiedOperators
- -XViewPatterns
- - XNPlusKPatterns
- -XDoRec
- -XTransformListComp
- -XNoImplicitPrelude
- -XPostfixOperators
- -XTupleSections
- -XDisambiguateRecordFields
- -XNamedFieldPuns
- -XRecordWildCards
- -XPackageImports
- -XExplicitForAll
- -XKindSignatures
- ...
extensiones de tipos de sistema
- -XUnboxedTuples
- -XLiberalTypeSynonyms
- -XGADTs
- -XMultiParamTypeClasses
- -XFlexibleContexts
- -XConstrainedClassMethods
- -XOverlappingInstances y -XIncoherentInstances
- -XTypeFamilies
- -XImplicitParams
extensiones transversales
- -XTemplateHaskell
- -XForeignFunctionInterface
Optimizatsions
- -fenable-reescritura-reglas
- -fspec-Constr Extensiones
- -O2
generación de código
extensiones de tiempo de ejecución
¿Qué opinas? No todos los indicadores son (a) definibles en términos de construcciones existentes, o (b) una nueva parte del compilador. Es más sutil.
También hay muchas otras extensiones, fíjate si puedes clasificarlas de esta forma.
No estoy seguro de cuán significativa es esa distinción, dada la exhaustividad de Turing, en cierto sentido, todo lo demás es solo "conveniencia". Por supuesto, escribir Haskell en lugar de, oh, Lazy K es ** extremadamente ** conveniente de hecho ... –