[GHC] #11450: Associated types at wrong type in instance
GHC
ghc-devs at haskell.org
Thu Jan 21 14:14:44 UTC 2016
#11450: Associated types at wrong type in instance
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: high | Milestone: 8.0.1
Component: Compiler | Version: 7.10.3
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 RyanGlScott):
> This is bogus, because the equation for `T` has the parameters to
`Either` reversed.
Interesting, I was not aware of such a restriction on type family
instances. Is this documented somewhere in the
[https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/type-
families.html users' guide section] on type families? I was under the
impression that as long as the instantiated type in the associated
instance was equal to the instance head up to alpha equivalence, then it
would be accepted, i.e., the above example is a valid type family
instance, but the following is rejected with an error:
{{{#!hs
class C x where
type T x
instance C (Either a b) where
type T (Either b (f a)) = b -> f a
}}}
{{{
• Type indexes must match class instance head
Found ‘Either b (f a)’ but expected ‘Either a b’
• In the type instance declaration for ‘T’
In the instance declaration for ‘C (Either a b)’
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11450#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list