2012-10-03 43 views

回答

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,但我可以混淆我的回合任何簡單的限制,你會選擇,我認爲一個完整的解決這個問題基本上可以解決暫停問題,所以我們不要責怪編譯器。)