对GHC扩展进行分类

时间:2010-06-23 18:47:35

标签: compiler-construction haskell ghc type-systems

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

  • 那些提供“语法糖”或方便
  • 的人
  • 和那些引入新东西的东西,例如新的范例。

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

2 个答案:

答案 0 :(得分: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-构造
  • -O2

代码生成扩展程序

  • -fllvm
  • -fasm
  • -fvia-C

运行时扩展程序

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

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

答案 1 :(得分:2)

这些标记已经在GHC用户指南的flag reference中进行了分类,语言扩展分为language features部分中的各种类别。