[GHC] #7862: Could not deduce (A) from the context (A, ...)
GHC
cvs-ghc at haskell.org
Fri May 3 11:45:28 CEST 2013
#7862: Could not deduce (A) from the context (A, ...)
----------------------------------------+-----------------------------------
Reporter: alang9 | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type checker) | Version: 7.6.2
Keywords: | Os: Linux
Architecture: x86_64 (amd64) | Failure: GHC rejects valid program
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
----------------------------------------+-----------------------------------
Comment(by simonpj):
OK, so now we get (from the original program)
{{{
T7862a.hs:17:24:
Overlapping instances for Num (Tower s0 a)
arising from a use of ‛<+>’
Matching givens (or their superclasses):
(Num (Tower s a))
bound by the instance declaration at T7862a.hs:14:10-36
Matching instances:
instance Num a => Num (Tower s a) -- Defined at T7862a.hs:19:10
(The choice depends on the instantiation of ‛a, s0’)
In the expression: (Tower as) <+> (Tower as)
}}}
which is better but not good. For two reasons:
* The "matching given" comes from one of the "silent supperclass"
parameters, which is confusing to the user.
* The whole thing is really due to the ambiguity of `s0`, and that's not
even reported.
The reason we are careful about overlap between givens and instances is
desribed in `Note [Instance and Given overlap]` in `TcInteract`.
I'm not sure what to do here. I'm expecting it's not a show-stopper for
you: just add a type signature to resolve the ambiguity.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7862#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list