T :: (k -> *) -> k -> * T :: forall {k}. (k -> *) -> k -> *