gpt4 book ai didi

haskell - 在 cabalized 项目中指定扩展的约定

转载 作者:行者123 更新时间:2023-12-04 11:57:11 24 4
gpt4 key购买 nike

对于任何 .hs 文件,您可以指定您依赖的语言扩展名,如下所示:

{-# LANGUAGE Foo, Bar, Baz #-}

cabalized 项目还可以在 .cabal 文件中为每个项目指定语言扩展:
extensions: Foo, Bar, Baz

哪些被认为是“最佳实践”?是否应该在 .cabal 文件中列出所有使用的扩展,以记录您的包与哪些编译器兼容?还是应该在每个文件的基础上记录所有扩展名,以便明确哪些文件依赖于哪些扩展名?在这两个地方广泛记录呢?还是介于两者之间的最佳实践?

最佳答案

这取决于它们的使用量。如果你在项目的每个模块中都使用了扩展,你可能想把它放在你的 cabal 文件中;例如,如果你在任何地方都使用 C 预处理器指令,那么将 CPP 放入才有意义。在您的 extensions字段而不是一遍又一遍地列出它,并且如果您的模块中有很多复杂的实例声明,则放置 FlexibleInstances 可能是合理的。也在那里。

但是“危险”扩展名(如 UndecidableInstances )和仅在少数地方使用的扩展名应该放在文件的顶部:前者用于文档(即“这里是龙”),后者用于文档并保存扩展的效果被隔离,因此您不会在另一个模块中不打算使用扩展的效果。

一般来说,我宁愿把它们放在文件的顶部,并且只使用 extensions一遍又一遍地指定扩展名时的字段会很烦人。

关于haskell - 在 cabalized 项目中指定扩展的约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9541107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com