假设我通常希望收到关于代码中不完整模式的警告,但有时我知道某个函数的模式不完整,我知道这很好。
是still true GHC 的警告粒度是每个模块的,并且没有办法更改有关特定功能或定义的警告?
最佳答案
是的,仍然正确,但您可以使用 error
来解决此问题。 .
f (Just a) = show a
没有
Nothing
的案例给出警告但添加f Nothing = error "f: Nothing supplied as an argument. This shouldn't have happened. Oops."
摆脱警告。
您的问题的按功能解决方案是给 Haskell 一些您认为永远不会运行的代码,以保持安静。
请注意:我认为您的代码应该是健壮的并且涵盖所有可能发生的情况,除非您能证明它永远不会发生。
我认为,解决这个限制并不是很好的做法。
(你可能认为这是一个敞开的后门,可以破解有用的编译时检查,应该通过
-Wall
停止,但我可以混淆我的回合你选择的任何简单限制,我认为这是一个完整的解决方案这个问题基本上可以解决停机问题,所以我们不要责怪编译器。)
关于haskell - 阻止 GHC 警告我一个特定的缺失模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717909/