I think explicit kinds on stuff like the Functor type class would have greatly helped my comprehension initially:
class Functor (f :: Type -> Type) where
map :: forall a b. (a -> b) -> f a -> f b
Learning `Maybe' as
data Maybe :: Type -> Type where ..
you as a student have been nudged towards make that connection (square in square hole) as you see Functor for the first time.
The output of :kind is always the form I prefer:
Functor :: (Type -> Type) -> Constraint