<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://mw.hh.se/wg211/index.php?action=history&amp;feed=atom&amp;title=WG211%2FM10Smaragdakis</id>
	<title>WG211/M10Smaragdakis - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://mw.hh.se/wg211/index.php?action=history&amp;feed=atom&amp;title=WG211%2FM10Smaragdakis"/>
	<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M10Smaragdakis&amp;action=history"/>
	<updated>2026-04-05T20:58:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M10Smaragdakis&amp;diff=63&amp;oldid=prev</id>
		<title>Admin: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M10Smaragdakis&amp;diff=63&amp;oldid=prev"/>
		<updated>2011-12-12T10:06:24Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Template Systems for Languages of the Future, Part III: Variance&amp;#039;&amp;#039;&amp;#039; by Yannis Smaragdakis, based on &amp;quot;Taming the Wildcards: Combining Definition- and Use-Site Variance&amp;quot; (PLDI&amp;#039;11)&lt;br /&gt;
&lt;br /&gt;
In a continuation of our recent work on advanced type systems for &amp;lt;br /&amp;gt;templates/generics (MorphJ, cJ), I&amp;#039;ll talk about the topic of variance. &amp;lt;br /&amp;gt;&amp;quot;Variance&amp;quot; is the name for language mechanisms that integrate parametric &amp;lt;br /&amp;gt;and subtype polymorphism, i.e., ask &amp;quot;when is a template instantiation a &amp;lt;br /&amp;gt;subtype of another?&amp;quot;. Two flavors of variance, definition-site versus &amp;lt;br /&amp;gt;use-site variance, have been studied and have had their merits hotly &amp;lt;br /&amp;gt;debated. Definition-site variance (as in Scala and C#) offers simple &amp;lt;br /&amp;gt;type-instantiation rules, but causes fractured definitions of naturally &amp;lt;br /&amp;gt;invariant classes; Use-site variance (as in Java) offers simplicity in &amp;lt;br /&amp;gt;class definitions, yet complex type-instantiation rules that elude most &amp;lt;br /&amp;gt;programmers.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;We present a unifying framework for reasoning about variance. Our &amp;lt;br /&amp;gt;framework is quite simple and entirely denotational, that is, it evokes &amp;lt;br /&amp;gt;directly the definition of variance with a small core calculus that does &amp;lt;br /&amp;gt;not depend on specific type systems. This general framework can have &amp;lt;br /&amp;gt;multiple applications to combine the best of both worlds: for instance, &amp;lt;br /&amp;gt;it can be used to add use-site variance annotations to the Scala type &amp;lt;br /&amp;gt;system. We show one such application in detail: we extend the Java type &amp;lt;br /&amp;gt;system with a mechanism that modularly infers the definition-site &amp;lt;br /&amp;gt;variance of type parameters, while allowing use-site variance &amp;lt;br /&amp;gt;annotations on any type-instantiation.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>