我通常希望确保在Haskell中使用显式导入列表或合格的导入,但是经常在进行更改时,我只是从模块中导入所有内容,然后在提交前需要提醒对其进行修复。因此,我将ghc-options: -Wmissing-import-lists
添加到了项目的cabal文件中,效果很好。
但是,在开发过程中,我也经常使用repl,并且通常在repl会话中需要的警告少于编译实际代码时的警告。因此,我对in this question提出了相同的建议。使用(本地项目).ghci
文件来关闭我在团体文件中设置的许多警告,包括-Wno-missing-import-lists
。
麻烦在于cabal repl
会这样做:
Preprocessing library for example-0.1.0.0..
GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help
<interactive>:1:1: warning: [-Wmissing-import-lists]
The module ‘Prelude’ does not have an explicit import list
Loaded GHCi configuration from /home/ben/src/example/.ghci
Loaded GHCi configuration from /home/ben/.ghci
[1 of 1] Compiling Example ( src/Example.hs, interpreted )
*Example
λ
它在自己-Wmissing-import-lists
的隐式导入期间应用Prelude
,甚至尝试读取禁用警告的.ghci文件。 1
我认为在读取任何.ghci文件之前,GHCi应用的任何其他选项也会出现问题(还有其他吗?)。那么,是否还有其他方法可以在Cabal文件中指定某些GHC选项仅用于构建,而不用于重复?
1 这特别令人讨厌,因为使用该警告构建Example.hs
实际上并不抱怨隐式Prelude
导入中缺少导入,如果我显式导入{{1 }}和一个导入列表,那么即使这些导入实际上不在提示的范围内,我仍然会从其自己的导入中收到Prelude
的警告!