[GHC] #8470: "Fix" spurious Unused do-bind warnings

GHC ghc-devs at haskell.org
Tue Oct 22 15:34:23 UTC 2013


#8470: "Fix" spurious Unused do-bind warnings
------------------------------------+-------------------------------------
       Reporter:  2piix             |             Owner:
           Type:  feature request   |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler          |           Version:  7.6.3
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+-------------------------------------
 I've been writing a lot of monadic code with side effects, and I'm getting
 a lot of unused do-bind warnings.

 In particular, consider the contrived example:


 {{{
 performSideEffect :: IO ()
 preformSideEffect = return ()

 someComplicatedIOAction :: a -> IO ()
 someComplicatedIOAction a = do
    a <- getA
    performSideEffect
    putStrLn . show $ a
 }}}


 The call to performSideEffect triggers the unused do-bind warning.

 I can appreciate that we're not binding result of performSideEffect, but
 we know, by virtue of the type () being a singleton, that there is nothing
 we can do with the the result.  So it "really" doesn't make sense to pull
 anything out of the action.  Fixing the warning with _ <-
 performSideEffect just adds noise.

 Would it be possible to turn off the warning in the case that the monad
 action returns (), or maybe even other singleton types?  I'm guessing the
 latter is harder, and I'd be happy to settle for just ().  I don't know
 enough about GHC's internals to evaluate how hard either would be, though.

 I know about -fno-warn-unused-do-bind, but it is inconvenient to use in a
 project that uses -Wall in the Cabal file, which a fairly popular web
 application framework uses.  Even still, catching the legitimate unused
 do-binds while eliminating these spurious ones would be a nice, noise-
 lowering addition.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8470>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list