[GHC] #15591: Inconsistent kind variable binder visibility between associated and non-associated type families
GHC
ghc-devs at haskell.org
Sat Sep 1 20:50:42 UTC 2018
#15591: Inconsistent kind variable binder visibility between associated and non-
associated type families
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.5
Resolution: | Keywords:
| TypeApplications, TypeFamilies
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):
Oops, it just hit me why I was getting `forall {k}. Maybe k` for `ZT`'s
kind even after the patch in comment:1 — `ZT` doesn't have a CUSK! (See
#15592 for more on this point in particular.)
If I change the definition to this:
{{{#!hs
class Z (k :: Type) where
type ZT :: Maybe k
type ZT = (Nothing :: Maybe k)
}}}
//Then// I get `forall k. Maybe k` for the kind of `ZT`, as expected, and
the default definition is no longer rejected. Yay!
But all is not well yet. There remains the mystery of why the CUSK-less
version of `ZT` is being rejected after applying the patch in comment:1.
One clue is that if I apply the patch in comment:1 (and comment out the
default definition for `ZT`), then GHCi gives me the following kind for
`Z`:
{{{
Z :: forall {k}. k -> Constraint
}}}
This doesn't seem right, since without the patch, I get the following kind
for `Z`:
{{{
Z :: * -> Constraint
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15591#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list