4
假設我通常會對我的代碼中的不完整模式提出警告,但有時我知道某個函數的模式不完整,並且我知道這很好。停止GHC警告我關於一個特定的丟失模式
是否still true GHC的警告粒度是每個模塊,並且沒有辦法更改關於特定函數或定義的警告?
假設我通常會對我的代碼中的不完整模式提出警告,但有時我知道某個函數的模式不完整,並且我知道這很好。停止GHC警告我關於一個特定的丟失模式
是否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
,但我可以混淆我的回合任何簡單的限制,你會選擇,我認爲一個完整的解決這個問題基本上可以解決暫停問題,所以我們不要責怪編譯器。)