[GHC] #7123: Dictionary method should be applicable even in existential context
GHC
cvs-ghc at haskell.org
Tue Aug 7 22:11:21 CEST 2012
#7123: Dictionary method should be applicable even in existential context
------------------------------+---------------------------------------------
Reporter: heisenbug | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.4.1 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Testcase:
Blockedby: | Blocking:
Related: |
------------------------------+---------------------------------------------
Comment(by heisenbug):
@parcs: of course, if you just look at `(Int, Int)` and the `Foo` class
definition, injectivity is necessary to resolve to the right instance. My
point is that the instance has already been resolved when the `q` value
has been created, and at the point of the pattern match only the `baz`
method needs to be extracted from the dictionary saved inside `q` and
applied. Of course this means that the typechecker does not stare on the
type of `(Int, Int)` but at the original type `Bar a` and uses that as the
argument of the call to `baz`.
I am pretty sure that somebody will stand up and declare "this is not how
type class method resolution works" but I am interested to hear the "why"
:-)
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7123#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list