Need kind annotations
In his blog post Edward Kmett finds that he needs kind annotations. In particular, he wants to be able to say this:
class Category (c :: k -> k -> *) where type Ob c :: k -> Constraint id :: Ob c a => c a a (.) :: (Ob c a, Ob c b, Ob c c) => c b c -> c a b -> c a c
Note that the kind of
Ob must match the kind of
c, so to declare its kind you need to mention the kind variable
k, and that means
k must be in scope.