#7395: DefaultSignatures conflict with default implementations
----------------------------------+-----------------------------------------
Reporter: cgaebel | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.1
Keywords: DefaultSignatures | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: GHC rejects valid program
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
----------------------------------+-----------------------------------------
Comment(by simonpj):
OK I see. You want the choice to depend on attempting (and perhapes
failing) solve the context of generic default.
A related and oft-made request is to allow, say
{{{
instance Foo1 a => Bar (T a) where ...
instance Foo2 a => Bar (T a) where ...
}}}
The request is that when soliving `(Bar (T Int))`, say, the compiler
should try to solve `(Foo1 Int)` and `(Foo2 Int)` and pick the one that
works.
This is a big deal; it'd require some kind of back-tracking in the
constraint solver. Your suggestion is, I think, more modest but stll very
far from straightforwward. For example in your code, suppose you had
{{{
instance Foo a => Klass (T a)
}}}
Now, whether the context of the generic default is soluble may depend on
the instantiation of a.
Unless I'm missing something I'm not keen.
Simon
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7395#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs