Type classes provide a universal language to describe computation and data transformations that is not tied to a particular data type. After all it's all an abstract program and
Kind<F, A>
does not know what it is until you provide a concretion at the edge where the entire program composition is executed.