假设我一般都希望在代码中警告不完整的模式,但有时我知道某个函数的模式不完整性,我知道它很好。
GHC的警告粒度是按模块进行still true,并且无法更改有关特定功能或定义的警告吗?
答案 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
停止,但是我可以对我选择的任何简单限制进行模糊处理。认为对该问题的完整解决方案基本上可以解决暂停问题,所以我们不要责怪编译器。)