30

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!

Ganesh Sittampalam
  • 28,821
  • 4
  • 79
  • 98
bobzhang
  • 1,771
  • 3
  • 17
  • 19
  • I really wish the `OPTIONS_GHC` thing did work, but haven't gotten around to following up with figuring out the exact behavior, filing a ticket, etc. – sclv Nov 22 '11 at 19:01
  • 1
    Surprisingly nobody seems to have addressed the claims that OPTIONS_GHC doesn't work. I think the claim is false. The following works for me: {-# OPTIONS_GHC -Wall -fno-warn-unused-binds #-} – George Co Jan 04 '20 at 15:32

4 Answers4

36

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.

luqui
  • 59,485
  • 12
  • 145
  • 204
19

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.

liftM2
  • 191
  • 1
  • 2
  • 1
    If running `hdevtools` you have to prepend `-g` so that these work, like this: `hdevtools check -g-Wall -g-Wall -g-fno-warn-unused-binds -g-fno-warn-unused-matches source.hs` – Al.G. Jan 05 '17 at 11:29
8

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

augustss
  • 22,884
  • 5
  • 56
  • 93
5

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.

nponeccop
  • 13,527
  • 1
  • 44
  • 106