在我学习Haskell时,我发现在现实代码中使用了很多语言扩展.作为初学者,我应该学会使用它们,还是应该不惜一切代价避免使用它们?我看到它破坏了与Haskell 98的兼容性,并且仅将代码限制为几乎GHC.但是,如果我在Hackage上浏览软件包,我发现大多数软件包都是GHC的.
那么,社区对使用语言扩展的态度是什么?
如果扩展的使用是可以的,我如何区分我可以"安全地"使用的扩展(那些可能成为下一个Haskell标准的一部分的扩展)与那些主要是"实验性"的扩展?例如,我认为-XDisambiguateRecordFields很好用,但未来很可能会得到支持吗?
Nor*_*sey 70
有一些GHC扩展太好了,不能没有.我最喜欢的是
其中真正重要的是多参数类型.
一些GHC扩展非常具有推测性和实验性,您可能需要谨慎使用.识别稳定且可信的扩展的一种好方法是查看它是否包含在Haskell Prime中,Haskell Prime希望是Haskell 98的后续版本.
我的第二个Don Stewart的建议是,应该使用LANGUAGE源文件中的pragma 标记每个扩展名. 不要使用命令行选项启用扩展.
Don*_*art 51
是的,请根据需要使用扩展名.
但一定要有意识地启用它们- 只有在您决定需要它们时才有意义.通过{-# LANGUAGE Rank2Types #-}(例如)在每个模块的基础上执行此操作.
这里的其他答案都很好。我想补充一点,GHC 扩展不像它们可能那样在未来容易受到攻击 (*),因为 GHC 似乎是最流行的 Haskell 编译器,而且我认为这不会很快改变。
(*) 与“面向未来”相反
| 归档时间: |
|
| 查看次数: |
5707 次 |
| 最近记录: |