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
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.