[GHC] #9334: Implement "instance chains"

GHC ghc-devs at haskell.org
Wed Aug 24 18:02:16 UTC 2016


#9334: Implement "instance chains"
-------------------------------------+-------------------------------------
        Reporter:  diatchki          |                Owner:  diatchki
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler (Type    |              Version:  7.9
  checker)                           |
      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 Iceland_jack):

 Replying to [comment:1 goldfire]:
 > 2. This doesn't necessarily mean that we'll never need overlapping
 instances -- instance chains seem to only work when the overlap would be
 contained only in one module. Some programs require inter-module overlap
 (say, for a global "default" instance).

 Here's some data from [http://homepages.inf.ed.ac.uk/jmorri14/d/final.pdf
 Type Classes and Instance Chains: A Relational Approach]

 > Our first question was how frequently the open-endedness of overlapping
 instances was necessary in practice. To answer this question, we
 determined whether the instances in each set were located in the same
 module, in different modules within the same package, or in different
 packages (Figure 3.1). Out of the 123 sets, 19 included overlapping
 instances from different modules, and 6 (of those 19) included overlapping
 instances from different packages. THe[sic] majority (104, or 85%) of the
 sets only included instances from a single module. This suggests that,
 while applications exist for instances overlapping across modules, most
 overlapping instances are defined locally.
 >
 > — page 37

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


More information about the ghc-tickets mailing list