2011-11-22 109 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' –