[GHC] #10749: Boot file instances should imply superclasses

GHC ghc-devs at haskell.org
Fri Aug 7 05:38:39 UTC 2015


#10749: Boot file instances should imply superclasses
-------------------------------------+-------------------------------------
              Reporter:  ezyang      |             Owner:  ezyang
                  Type:  bug         |            Status:  new
              Priority:  low         |         Milestone:
             Component:  Compiler    |           Version:  7.11
              Keywords:  backpack    |  Operating System:  Unknown/Multiple
          Architecture:              |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
             Test Case:              |        Blocked By:
              Blocking:              |   Related Tickets:
Differential Revisions:              |
-------------------------------------+-------------------------------------
 Currently, if I write the following program:

 {{{
 -- A.hs-boot
 module A where
 data T
 instance Ord T

 -- B.hs
 module B where
 import {-# SOURCE #-} A
 f :: T -> T -> Bool
 f x y = x == y
 }}}

 I get:

 {{{
 B.hs:4:11:
     No instance for (Eq T) arising from a use of `=='
     Possible fix: add an instance declaration for (Eq T)
     In the expression: x == y
     In an equation for `f': f x y = x == y
 }}}

 This is a bit confusing, because Ord instances are supposed to imply Eq
 instances.

 GHC should either:

 1. Reject A.hs-boot (claiming that it could not find evidence that T had
 an Eq instance), or
 2. Accept B.hs, since the instance requirement for Ord should imply Eq.

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


More information about the ghc-tickets mailing list