对GHC扩展进行分类

Gue*_*nni 5 compiler-construction haskell type-systems ghc

我想知道GHC的扩展是否可以分为两个不同的类别

  • 那些提供"语法糖"或方便的人
  • 那些引入新东西的东西,例如新的范例.

现在提供一个人可以将现有的扩展分为上述类别,哪个扩展适合哪个类别?

Don*_*art 8

我认为更合适的分类是将其划分为编译器管道:

句法扩展

  • -XMagicHash
  • -XUnicodeSyntax
  • -XNewQualifiedOperators
  • -XViewPatterns
  • -XNPlusKPatterns
  • -XDoRec
  • -XTransformListComp
  • -XNoImplicitPrelude
  • -XPostfixOperators
  • -XTupleSections
  • -XDisambiguateRecordFields
  • -XNamedFieldPuns
  • -XRecordWildCards
  • -XPackageImports
  • -XExplicitForAll
  • -XKindSignatures
  • ...

键入系统扩展

  • -XUnboxedTuples
  • -XLiberalTypeSynonyms
  • -XGADTs
  • -XMultiParamTypeClasses
  • -XFlexibleContexts
  • -XConstrainedClassMethods
  • -XOverlappingInstances和-XIncoherentInstances
  • -XTypeFamilies
  • -XImplicitParams

交叉扩展

  • -XTemplateHaskell
  • -XForeignFunctionInterface

Optimizatsions

  • -fenable重写规则
  • -fspec-构造
  • -02

代码生成扩展

  • -fllvm
  • -fasm
  • -fvia-C

运行时扩展

  • -threaded

你怎么看?并非每个标志都是(a)可以根据现有结构定义,或者(b)编译器的新部分.它更加微妙.

还有许多其他扩展,看看你是否可以用这种形式对它们进行分类.