Covariance and contravariance
Topic history | v1 (current) | created by jjones
Details
Covariance and contravariance
see v1 | 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.