[GHC] #11451: Inconsistent warnings for unused binders

GHC ghc-devs at haskell.org
Wed Jan 20 00:03:19 UTC 2016


#11451: Inconsistent warnings for unused binders
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by ekmett):

 > Now, can you give me an example where that would be annoying? Mabye you
 are right, but let's see.

 Let's look at what happens to a real instance list for a data type that I
 have open on my screen, the haddocks would then show the following
 instances and class associated types.

 {{{#!hs
 Category * (Indexed _i)
 (~) * i j => Indexable i (Indexed j)
 Arrow (Indexed _i)
 ArrowChoice (Indexed _i)
 ArrowApply (Indexed _i)
 ArrowLoop (Indexed _i)
 Representable (Indexed _i)
 Corepresentable (Indexed _i)
 Choice (Indexed _i)
 Closed (Indexed _i)
 Strong (Indexed _i)
 Costrong (Indexed _i)
 Profunctor (Indexed _i)
 Conjoined (Indexed _i)
 Bizarre (Indexed Int) Mafic
 Sieve (Indexed i) ((->) i)
 Cosieve (Indexed i) ((,) i)
 Sellable (Indexed i) (Molten i)
 Bizarre (Indexed i) (Molten i)
 Monad (Indexed _i _a)
 Functor (Indexed _i _a)
 MonadFix (Indexed _i _a)
 Applicative (Indexed _i _a)
 Apply (Indexed _i _a)
 Bind (Indexed _i _a)
 type Rep (Indexed i) = (->) i
 type Corep (Indexed i) = (,) i
 }}}

 It seems to me the vast majority of instances I have lying around would
 get almost all of their arguments mangled.

 Using that as an entirely unscientific survey, 19/27 or ~70% of those
 instances would have to have their code changed, to get uglier haddocks.

 Ramped up to cut across the ~10000 instances in my active maintenance
 directory instead of the 27 in this single source file, that would be
 annoying. =/

 ''Allowing'' the use of _'s in those positions seems perfectly fine to me,
 but requiring it would create tension between being able to provide clean-
 looking haddocks and avoiding this warning, or doing something cheesy like
 writing unnecessary, brittle, `InstanceSigs`.

 Ultimately, no user of `MonadState` cares about the fact that `s` isn't
 used in the body of

 {{{#!hs
 instance MonadReader r m => MonadReader r (StateT _s m)
 }}}

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


More information about the ghc-tickets mailing list