kirancodes.me
To Proof Maintenance & Beyond!

Taming the wildcards: combining definition- and use-site variance

John Altidor, Shan Shan Huang, Yannis Smaragdakis

Abstract

Variance allows the safe integration of parametric and subtype polymorphism. Two flavors of variance, definition-site versus use-site variance, have been studied and have had their merits hotly debated. Definition-site variance (as in Scala and C#) offers simple type-instantiation rules, but causes fractured definitions of naturally invariant classes; Use-site variance (as in Java) offers simplicity in class definitions, yet complex type-instantiation rules that elude most programmers.

Related papers