The category of types turns ordinary assignment rules into a mathematical structure. Its objects are types, and a morphism from X to Y exists when an expression of type X can be assigned to a variable of type Y. section 7.2
With Object, Animal, Giraffe, and Tiger, assignment compatibility forms a partial order: Giraffe and Tiger both lead to Animal and Object, but neither leads to the other. Identity morphisms are normally omitted from the diagram. section 7.2
Covariance as preserved assignment
An IE<Giraffe> cannot initially be assigned to IE<Animal>. Because IE<T> uses T only as output, declaring interface IE<out T> makes the assignment valid. The generic construction then preserves the relevant assignment-compatibility morphisms. section 7.2
This perspective explains the terminology: covariant and contravariant generic interfaces behave like functors that preserve assignment morphisms, either in the same direction or in reverse. The treatment reaches the connection to posetal categories and semilattices, but only sketches the wider relationship to programming-language analysis. section 7.4
