阻止GHC警告我一个特定的缺失模式

ami*_*dfv 4 warnings haskell ghc

假设我通常希望在代码中警告不完整的模式,但有时我知道某个函数的模式不完整,我知道它很好.

是否仍然如此认为GHC的警告粒度为每个模块,而且也没有办法改变有关特定功能或定义警告?

And*_*ewC 6

是的,仍然是,但你可以通过使用来解决这个问题error.

f (Just a) = show a
Run Code Online (Sandbox Code Playgroud)

没有案例Nothing给出警告但添加

f Nothing = error "f: Nothing supplied as an argument. This shouldn't have happened. Oops."
Run Code Online (Sandbox Code Playgroud)

摆脱警告.

你的问题的每个功能解决方案是给Haskell一些你认为永远不会运行的代码,以保持安静.

请注意:我认为您的代码应该是健壮的并涵盖所有可能性,除非您能证明它永远不会发生.我认为,解决这个限制并不是很好的做法.

(你可能认为这是一个广泛的后门,可以阻止一个有用的编译时检查,应该停止-Wall,但我可以混淆我的选择你选择的任何简单限制,我认为这个问题的完整解决方案会本质上解决了暂停问题,所以我们不要责怪编译器.)