如何[暂时]抑制“已定义但未使用”的警告?

时间:2011-11-22 02:22:13

标签: haskell ghc

当我对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-warn-unused-binds,但它仍然不起作用。

非常感谢!

4 个答案:

答案 0 :(得分:31)

另一种可能性,取决于您的情况:我相信您可以使用下划线为标识符添加前缀以抑制此警告。所以:

_x = 42
如果未使用_x

将不会生成警告。

答案 1 :(得分:16)

GHC有两个警告标志,可触发Warning: Defined but not used

您需要命令行标记-fno-warn-unused-binds-fno-warn-unused-matches的某种组合。

答案 2 :(得分:8)

当我想暂时取消某些警告时,我通常会使用-w来抑制所有警告。

答案 3 :(得分:6)

我使用了一种解决方法:

我编译时没有警告,但随后我使用HLint工具为我显示警告。 HLint具有单独发出警告的功能。