#7404: Inconsistent treatment of overlap between type and kind variables in type families -----------------------------+---------------------------------------------- Reporter: goldfire | Owner: Type: bug | Status: new Priority: normal | Component: Compiler (Type checker) Version: 7.7 | Keywords: PolyKinds Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- The following code compiles on 7.7.20121031:
{{{ type family Foo (x :: *) (y :: x) type instance Foo Bool Int = Int }}} After some poking around, I discovered that GHC is treating the type variable {{{x}}} and the kind variable {{{x}}} as distinct. In core, Foo has three arguments. The following code does not compile: {{{ type family Bar (x :: *) :: x }}} The error is {{{ Type variable `x' used in a kind In the kind `x' }}} I can see arguments in favor of either of the above treatments (separate namespaces for type and kind variables vs. unified namespace), but the current implementation seems inconsistent to me. -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7404> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs