
#9701: GADTs not specialized properly -------------------------------------+------------------------------------- Reporter: dfeuer | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.9 Resolution: | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: Runtime | Blocked By: performance bug | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by goldfire): Replying to [comment:6 dfeuer]:
Thinking over the matter some more, I believe that incoherent instances already interact about as badly as they can with GADTs. Specifically, consider what will happen when GADT values coming from two different modules and carrying incoherent instances come together—if I'm not mistaken, there's no way to predict which dictionary will be chosen for any given operation combining them.
And you don't even need `-XIncoherentInstances` to cause this problem -- orphan instances are enough. Yes, you're right in that you can unpack two different instances from GADTs, and it's a tossup as to which one gets used. See #8338. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9701#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler