Type family with higher-rank result is too accepting
GHC accepts this garbage:
type family F2 :: forall k. k -> Type
data SBool :: Bool -> Type
data Nat
data SNat :: Nat -> Type
type instance F2 = SBool
type instance F2 = SNat
The family F2
should have an arity of 0, meaning that only one instance is possible -- and the RHS of that instance must have kind forall k. k -> Type
. In other words, even accepting only one of the instances above is hogwash.
This is from ticket:11719#comment:161416, but you don't have to read that to understand this.
Trac metadata
Trac field | Value |
---|---|
Version | 8.6.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |