[GHC] #10722: GHC accepts "instance forall b. Blah []"

GHC ghc-devs at haskell.org
Mon Aug 3 08:54:52 UTC 2015


#10722: GHC accepts "instance forall b. Blah []"
-------------------------------------+-------------------------------------
        Reporter:  osa1              |                   Owner:
            Type:  bug               |                  Status:  closed
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.11
      Resolution:  invalid           |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  GHC accepts       |  Unknown/Multiple
  invalid program                    |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------
Changes (by simonpj):

 * status:  new => closed
 * resolution:   => invalid


Comment:

 comment:1 isn't right: with `ScopedTypeVariables` the type variables
 mentioned the instance head are in scope in the instances (see
 [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/other-
 type-extensions.html#cls-inst-scoped-tyvars the manual]). Eg
 {{{
 instance Eq a => Eq [a] where
   (==) (x:xs) (y:ys) = (x::a) == y) && (xs::[a] == ys)
 }}}
 should work just fine.  You don't even need a forall.  (I will add a note
 to say this.)

 However the variable `b` is unused in instance head, and there is really
 no point in having it there; hence the message.  If you have a use-case
 where you want an instance to be quantified over a type that is not
 mentioned in the instance head, I'd be glad to see it.

 Meanwhile I'll mark this as invalid.

 Simon

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


More information about the ghc-tickets mailing list