# Introduction

John C. Reynolds

**TLDR**: The idea of contravariance and covariance in physics and math is usually a statement about how something (for example, a vector)

*transforms*with respect to a specified group of transformations (i.e., the group of rotations, for example). Category theory (*) abstracts and generalizes the concept, and this allows it to be applied to computer language design, for the simple reason that

*computer language design*is often expressed in algebraic (and hence categorical) terms.

As the history of contraviance and covariance is somewhat long, I will be breaking it down into parts..

** Using Category Theory to Design Implicit Conversions and Generic Operators*-- John C. Reynolds, 1980