5

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

  • 那些提供“句法糖”或便利的
  • 以及那些引入新事物的人,例如新范式。

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

4

2 回答 2

8

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

句法扩展

  • -XMagicHash
  • -XUnicode 语法
  • -XNewQualifiedOperators
  • -XViewPatterns
  • -XNPlusKPatterns
  • -XDoRec
  • -XTransformListComp
  • -XNoImplicit Prelude
  • -XPostfixOperators
  • -XTupleSections
  • -XDisambiguateRecordFields
  • -XNamedFieldPuns
  • -XRecordWildCards
  • -XPackageImports
  • -XExplicitForAll
  • -XKindSignatures
  • ...

类型系统扩展

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

横切扩展

  • -XTemplateHaskell
  • -XForeignFunctionInterface

优化

  • -fenable-rewrite-rules
  • -fspec-constr
  • -O2

代码生成扩展

  • -fllvm
  • -fasm
  • -fvia-C

运行时扩展

  • -线程

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

还有很多其他的扩展,看看能不能用这种形式分类。

于 2010-06-23T20:08:32.223 回答
2

这些标志已经在 GHC 用户指南的标志参考中进行了分类,并且语言扩展在语言功能部分中分为不同的类别。

于 2010-06-25T20:03:36.970 回答