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

时间:2012-10-03 22:42:22

标签: haskell warnings ghc

假设我一般都希望在代码中警告不完整的模式,但有时我知道某个函数的模式不完整性,我知道它很好。

GHC的警告粒度是按模块进行still true,并且无法更改有关特定功能或定义的警告吗?

1 个答案:

答案 0 :(得分:6)

是的,仍然如此,但您可以使用error解决此问题。

f (Just a) = show a

没有Nothing的情况会发出警告,但会添加

f Nothing = error "f: Nothing supplied as an argument. This shouldn't have happened. Oops."

摆脱了警告。

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

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

(您可能认为这是一个广泛的后门,可以阻止有用的编译时检查,并且应该由-Wall停止,但是我可以对我选择的任何简单限制进行模糊处理。认为对该问题的完整解决方案基本上可以解决暂停问题,所以我们不要责怪编译器。)