5

GHC の拡張機能は、基本的に 2 つの異なるカテゴリに分類できるかどうか疑問に思っていました

  • 「構文糖」または利便性を提供するもの
  • 新しいもの、たとえば新しいパラダイムを導入するもの。

既存の拡張機能を上記のカテゴリに分類できるとしたら、どの拡張機能がどのカテゴリに適合するでしょうか?

4

2 に答える 2

8

より適切な分類は、コンパイラ パイプラインで分割することだと思います。

構文拡張

  • -XMagicHash
  • -XUnicodeSyntax
  • -XNewQualifiedOperators
  • -XViewPatterns
  • -XNPlusKPatterns
  • -XDoRec
  • -XTransformListComp
  • -XNoImplicitPrelude
  • -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
  • -ファズム
  • -fvia-C

ランタイム拡張

  • -スレッド

どう思いますか?すべてのフラグが (a) 既存の構造に関して定義可能である、または (b) コンパイラの新しい部分であるとは限りません。もっと微妙です。

他にも多くの拡張機能があります。この形式で分類できるかどうかを確認してください。

于 2010-06-23T20:08:32.223 に答える
2

フラグは GHC のユーザー ガイドのフラグ リファレンスで既に分類されており、言語拡張機能は言語機能のセクションでさまざまなカテゴリに分類されています。

于 2010-06-25T20:03:36.970 に答える