Parametricity
Parametricity is a foundational principle in type theory and functional programming that describes how polymorphic functions behave uniformly across all possible type instantiations. When a function is parametric with respect to a type variable, it cannot inspect the concrete form of that type; instead, it must operate in a way that is agnostic to the type’s representation. This uniformity yields strong guarantees about program behavior, data abstraction, and modularity.
Historically, parametricity was formalized by John C. Reynolds in his 1983 work on types, abstraction, and polymorphism.
Consequences of parametricity include representation independence, where modules can expose abstract types without revealing implementations, and
Limitations arise when language features weaken or defeat uniformity. Side effects, subtyping, or advanced features such
See also: abstract data types, free theorems, relational interpretation.