Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 分类GHC扩展_Compiler Construction_Haskell_Ghc_Type Systems - Fatal编程技术网

Compiler construction 分类GHC扩展

Compiler construction 分类GHC扩展,compiler-construction,haskell,ghc,type-systems,Compiler Construction,Haskell,Ghc,Type Systems,我想知道GHC的扩展是否可以基本上分为两类 那些提供“语法上的suggar”或便利的 以及那些引入新事物的人,比如说一个新的范例 现在,如果可以将现有扩展划分为上述类别,那么哪个扩展将适合哪个类别?我认为更合适的分类是按照编译器管道将其划分: 语法扩展 -XMagicHash -徐尼科综合征 -XNewQualifiedOperators -XViewPatterns -XNPlusKPatterns -XDoRec -XTTransferorMListComp -XNoImplicitP

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

  • 那些提供“语法上的suggar”或便利的
  • 以及那些引入新事物的人,比如说一个新的范例

现在,如果可以将现有扩展划分为上述类别,那么哪个扩展将适合哪个类别?

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

语法扩展

  • -XMagicHash
  • -徐尼科综合征
  • -XNewQualifiedOperators
  • -XViewPatterns
  • -XNPlusKPatterns
  • -XDoRec
  • -XTTransferorMListComp
  • -XNoImplicitPrelude
  • -xpostfix运算符
  • -不连续切片
  • -XDISAmbiguatereRecordFields
  • -XNamedFieldPuns
  • -XRecord通配符
  • -XPackageImports
  • -XExplicitForAll
  • -Xkind签名
键入系统扩展

  • -XUnboxedTuples
  • -xliberaltype同义词
  • -XGADTs
  • -XMultiParamTypeClasses
  • -XFlexibleContexts
  • -XConstrainedClassMethods
  • -XOverlappingInstances和-XIncoherentInstances
  • -XTypeFamilies
  • -XImplicitParams
交叉扩展

  • -XTemplateHaskell
  • -XForeignFunctionInterface
优化

  • -可修改的重写规则
  • -fspec合同
  • -氧气
代码生成扩展

  • -fllvm
  • -fasm
  • -fvia-C
运行时扩展

  • -螺纹
你觉得怎么样?不是每个标志都可以(a)根据现有结构定义,或者(b)编译器的新部分。这更微妙


还有许多其他扩展,请看您是否可以在此表单中对它们进行分类。

标记已经在GHC的用户指南中进行了分类,语言扩展在上一节中被分解为不同的类别。

我不确定这种区别有多大意义——考虑到图灵完整性,从某种意义上说,其他一切都只是“方便”。诚然,编写Haskell而不是,噢,Lazy K确实非常方便……为什么要将“横切”作为FFI和TH的标签?@Jason Dusek:因为它们对语言的多个方面都有深远的影响,我想——要么调用任意外部代码,要么在编译时对代码进行任意更改。噢,因为它们修改了编译器和运行时的所有方面:语法、类型、代码生成和运行时支持。