#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

Reply via email to