Dan*_*ton 7 haskell ghc cabal language-extension
对于任何.hs文件,您可以指定您所依赖的语言扩展名,如下所示:
{-# LANGUAGE Foo, Bar, Baz #-}
Run Code Online (Sandbox Code Playgroud)
cabalized项目还可以在.cabal文件中基于每个项目指定语言扩展:
extensions: Foo, Bar, Baz
Run Code Online (Sandbox Code Playgroud)
哪一个被认为是"最佳实践"?是否应使用.cabal文件中列出的所有扩展名,作为记录您的包与哪些编译器兼容的形式?或者是否应该基于每个文件记录所有扩展名,以便明确哪些文件取决于哪些扩展名?在这两个地方广泛记录怎么样?或者是介于两者之间的最佳实践?
这取决于他们使用了多少.如果在项目的每个模块中使用扩展,则可能需要将其放在cabal文件中; 例如,如果你在任何地方都使用C预处理器指令,那么放入CPP
你的extensions
字段而不是一遍又一遍地列出它是有意义的,如果你的模块中有很多复杂的实例声明,放在FlexibleInstances
那里是合理的.也是.
但是"危险的"扩展(例如UndecidableInstances
),以及仅在少数地方使用的扩展应该放在文件的顶部:前者用于文档(即"这里是龙"),后者用于文档并保持效果扩展名被隔离,因此您不会在另一个模块中意外使用扩展名的效果.
一般情况下,我会把它们放在文件的顶部,而只是在extensions
反复指定扩展时使用该字段会让人讨厌.
归档时间: |
|
查看次数: |
491 次 |
最近记录: |