Covariance and contravariance


Topic history | v1 (current) | created by jjones

Details

Covariance and contravariance

| created by jjones | Add topic "Covariance and contravariance"
Title
Covariance and contravariance
Description
Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used. Variance refers to how subtyping between more complex types relates to subtyping between their components. For example, how should a list of Cats relate to a list of Animals? Or how should a function that returns Cat relate to a function that returns Animal? Depending on the variance of the type constructor, the subtyping relation of the simple types may be either preserved, reversed, or ignored for the respective complex types. In the OCaml programming language, for example, "list of Cat" is a subtype of "list of Animal" because the list type constructor is covariant. This means that the subtyping relation of the simple types are preserved for the complex types.
Link
https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)

resources

This topic has no history of related resources.

authors

This topic has no history of related authors.