因为我学习Haskell,我看看,有很多的 语言扩展 用在现实生活中的代码。作为一个初学者,我应该学会使用它们,或者我应该避免它们的成本?我看到它裂的兼容性Haskell98和限制代码很多GHC只。然而,如果我浏览包Hackage,我看到他们中的大多数是GHC仅无论如何。

那么,什么是一个态度的社会对使用语言扩展?

如果使用的扩展是好的,我怎么能分辨的扩展,我可以用"安全"(那些可能成为下一个Haskell标准)从那些主要是"实验"?例如,我想, -XDisambiguateRecordFields 是好的和有用的,但是它有可能支持在未来?

有帮助吗?

解决方案

有一些GHC扩展过很好的生活。在我最喜欢的是

  • 多参数的类型
  • 范围的类型变量
  • 更高级类型
  • 广义的代数数据类型(GADTs)

这些真正重要之一是多参数类型的课程。

一些GHC的扩展都非常投机性的和试验性的,你可能想要谨慎使用。一个好的方法来确定一个稳定和信任的扩展是要看它是否将包含在 哈斯克尔总理, ,这是希望的后续Haskell98.

我的第二唐*斯图尔特的建议,即每一个扩展应使用标记 LANGUAGE pragma在来源文件。 不不 启用扩展使用命令行的选择。

其他提示

是的,请根据需要使用扩展程序。

但请确保只在您决定需要时才启用 。 通过 { - #LANGUAGE Rank2Types# - } (例如)在每个模块的基础上执行此操作。

一般来说,人们确实大量使用GHC扩展,因为它们非常有用而且Haskell 98已经很老了。一旦有了更新的标准,人们可能会更加努力地坚持下去。

您可以在此处找到下一个标准 的提案状态

这里的其他答案都很好。我想补充一点,GHC扩展并不像它们可能的那样具有未来的脆弱性(*),因为GHC似乎是最流行的Haskell编译器,我不认为它会很快发生变化。

(*)与“面向未来”

相反
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top