Категоризация расширений GHC - PullRequest
5 голосов
/ 23 июня 2010

Мне было интересно, можно ли разделить расширения GHC в основном на две разные категории

  • те, которые предоставляют "синтаксический сахар" или удобство
  • и те, которые вводят что-то новое, новоенапример, парадигма.

Теперь при условии, что можно разделить существующие расширения на вышеуказанные категории, какое расширение подойдет к какой категории?

Ответы [ 2 ]

8 голосов
/ 24 июня 2010

Я думаю, что более подходящей категоризацией было бы разделить ее на конвейер компилятора:

Синтаксические расширения

  • -XMagicHash
  • -XUnicodeSyntax
  • -XNewQualifiedOperators
  • -XViewPatterns
  • -XNPlusKPatterns
  • -XDoRec
  • -XTransformListComp
  • -XPostfixOperators
  • -XTupleSections
  • -XDisambiguateRecordFields
  • -XNamedFieldPuns
  • -XRecordWildCards1034 *
  • -XExplicitForAll
  • -XKindSignatures
  • ...

Тип системных расширений

  • -XUnboxedTuples
  • -XLiberalTypeSynonyms
  • -XGADTs
  • -XMultiParamTypeClasses
  • -XF flexContexts
  • -XConstrainedClassXOverlappingInstances и -XIncoherentInstances
  • -XTypeFamilies
  • -XImplicitПараметры

Межсекторные расширения

  • -XTemplateHaskell
  • -XForeignFunctionInterface

Оптимизация

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

Расширения генерации кода

  • -fllvm
  • -fasm
  • -fvia-C

Расширения времени выполнения

  • - с резьбой

Что вы думаете?Не каждый флаг либо (а) определим в терминах существующих конструкций, либо (б) новой частью компилятора.Это более тонко.

Есть также много других расширений, посмотрите, можете ли вы классифицировать их в этой форме.

2 голосов
/ 26 июня 2010

Флаги уже классифицированы в справочнике флаг в руководстве пользователя GHC, а языковые расширения разбиты на различные категории в разделе о функциях языка .

...