[GHC] #7404: Inconsistent treatment of overlap between type and kind variables in type families
GHC
cvs-ghc at haskell.org
Mon Nov 12 20:15:05 CET 2012
#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
More information about the Glasgow-haskell-bugs
mailing list