GHC accepts multiple conflicting kind signatures in type class declarations
Hi,
Consider this suspicious looking program:
{-# LANGUAGE TypeFamilies #-}
class C (f :: * -> *) where
type F (f :: *) :: *
I use the same type argument name f but specify different kinds. Now I can never define an instance anymore:
instance C [] where
-- Error: Type indexes must match class instance head
-- type F () = ()
-- Error: Expecting one more argument to `[]'
-- type F [] = ()
I think GHC should verify, if the same type argument name is used multiple times in a type class definition, that their kinds match. In that case the type class above would be rejected.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | sjoerd@w3future.com |
| Operating system | |
| Architecture |