我应该使用GHC Haskell扩展吗?

在我学习Haskell时,我发现在现实生活中有很多语言扩展使用。 作为初学者,我应该学会使用它们,还是应该不惜一切代价避免它们? 我发现它破坏了与Haskell 98的兼容性,并且仅将代码限制在几乎GHC。 但是,如果我在Hackage上浏览软件包,我发现它们中的大多数只有GHC。

那么,社区对使用语言扩展的态度如何?

如果扩展的使用是可以的,那么我怎样才能区分我可以“安全”使用的扩展(可能成为下一个Haskell标准的一部分)和那些大部分是“实验性”的扩展? 例如,我想-XDisambiguateRecordFields很好用,但它可能会在将来得到支持吗?


有一些GHC扩展是太好了,没有生活。 我最喜欢的是

  • 多参数类型的类
  • 作用域类型变量
  • 更高等级的类型
  • 广义代数数据类型(GADT)
  • 其中最重要的是多参数类型类。

    一些GHC扩展非常具有推测性和实验性,您可能需要谨慎使用。 确定一个稳定可信的扩展的一个好方法是看看它是否被纳入Haskell Prime,Haskell Prime希望成为Haskell 98的继任者。

    我第二个唐斯图尔特的建议是,每个扩展应该使用源文件中的LANGUAGE杂注标记。 不要使用命令行选项启用扩展。


    是的,根据需要使用扩展名。

    但一定要有意识地启用它们 - 只有当你决定需要它们时才会启用它们。 (例如)通过{-# LANGUAGE Rank2Types #-}以每个模块为基础执行此操作。


    一般来说,人们使用GHC扩展的次数相当多,因为它们非常有用,而Haskell 98则相当老旧。 一旦有更新的标准,人们可能会更加努力地坚持下去。

    您可以在这里找到下一个标准提案的状态。

    链接地址: http://www.djcxy.com/p/43161.html

    上一篇: Should I use GHC Haskell extensions or not?

    下一篇: Haskell lexical layout rule implementation