
#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 simonpj): What I'm missing is this: why would it not be more perspicuous to say {{{ Category * (Indexed _) }}} That doesn't look like mangling to me. It looks like explaining that `Indexed` of anything is an instance. Similarly {{{ instance MonadReader r m => MonadReader r (StateT _ m) }}} Is that bad? If it is, why do you not object to the warning you get (for unused `y`) when you write this? {{{ f x y = x }}} I'm not arguing against you, just trying to understand. Are you also saying that you do not like {{{ type instance F (Maybe _) = Int }}} and that you want to be able to write {{{ type instance F (Maybe x) = Int }}} without a warning? That is, do you see class instances and type-function instances the same? It would be easier NOT to issue warnings. But if we do sometimes and not at other similar-looking times, I'd like to have a principled explanation. Can you give a general rule that informs your choices? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11451#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler