2011-11-22 58 views
24

當我原型Haskell程序,我總是得到數百警告這樣的(不是開玩笑):如何[暫時]抑制「已定義但未使用」的警告?

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:70:15: 
    Warning: Defined but not used: `ta' 

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:72:15: 
    Warning: Defined but not used: `ta' 

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:77:26: 
    Warning: Defined but not used: `v'

反正是有暫時消除這些警告? 我試圖把這個在我的名.hs文件:

{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-name-shadowing 
    -fwarn-monomorphism-restriction -fwarn-hi-shadowing 
#-} 

不幸的是,這是行不通的,雖然我也試過:設置-fno-警告,未使用的-結合,它仍然無法正常工作。

非常感謝!

+0

我真的希望'OPTIONS_GHC'事情能夠奏效,但是還沒有到處搞清楚確切的行爲,提交一張票等。 – sclv

回答

28

另一種可能性,取決於你的情況:我相信你可以用一個下劃線前綴標識符來壓制這個警告。所以:

_x = 42 

如果不使用_x將不會生成警告。

+1

確實。爲什麼會發生這種情況? –

8

我通常使用-w來取消所有警告,當我想暫時擺脫一些警告。

+0

但是,那麼你失去了其他警告你可能想要查看。 –

+2

是的,但是當我暫時刪除警告時,這是暫時的,所以我很快就會看到這些警告。 – augustss

6

我使用一種解決方法是:

我編譯沒有警告,但後來我用HLint工具來對我顯示警告。 HLint有單獨轉換警告的設施。

15

GHC有兩個警告標誌可觸發Warning: Defined but not used

您需要某些命令行標誌組合-fno-warn-unused-binds-fno-warn-unused-matches

+0

如果運行'hdevtools',你必須預先加上'-g',這樣才能正常工作,例如:'hdevtools check -g-Wall -g-Wall -g -fno -warn-unused-binds -g -fno-warn-未使用的匹配source.hs' –