TSa Thomas.Sandlass-at-barco.com |Perl 6| wrote:

John M. Dlugosz wrote:

Yeah, the standard set of co-, contra-, in- and bivariance ;)

Assume A <: B being subtypes. Then how should Foo[A]
and Foo[B] relate?

   Foo[A] <: Foo[B]   # covariance
   Foo[B] <: Foo[A]   # contravariance

Invariance means there's no relation at all. And Bivariance
means both!

Regards, TSa.
The multi-dictionary search didn't show this usage of covariance and contravariance. But the series of articles on Type Theory in JOT uses it to mean "in the same direction" and "in the opposite direction" but doesn't define it as absolute subtyping directions. How is it being used in this mailing list?

I've thought about the issue, and it depends. The type parameters to the class might be annotated to indicate whether it is treated like a contained value type, is ignored, or what. But there are too many cases and the relationships are complex. Instead, it needs to look at the resulting public methods that involve the type parameters. It considers one a subtype of the other if they meet the requirements for method substitutability.

Reply via email to