How to [temporarily] suppress “defined but not use

2019-02-16 04:54发布

问题:

When I prototype Haskell programs, I always get hundreds of warnings like this (not joking):

/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'

Is there anyway to remove these warnings temporarily? I tried putting this in my .hs file:

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

Unfortunately, it does not work, and although I also tried to :set -fno-warn-unused-binds, it still does not work.

Many thanks!

回答1:

Another possibility, depending on your situation: I believe you can prefix identifiers with an underscore to suppress this warning. So:

_x = 42

will not generate the warning if _x is not used.



回答2:

GHC has two warnings flags which can trigger Warning: Defined but not used.

You need some combination of the command line flags -fno-warn-unused-binds and -fno-warn-unused-matches.



回答3:

I usually use -w to suppress all warnings when I want get rid of some warning temporarily.



回答4:

I use a workaround for this:

I compile without warnings, but then I use HLint tool to display warnings for me. HLint has facilities to turn warnings separately.



标签: haskell ghc