Giuseppe Castagna - Covariance and Controvariance: a fresh look at an old issue (a primer in advanced type systems for learning functional programmers)

lmcs:4809 - Logical Methods in Computer Science, February 22, 2022, Volume 16, Issue 1 - https://doi.org/10.23638/LMCS-16(1:15)2020
Covariance and Controvariance: a fresh look at an old issue (a primer in advanced type systems for learning functional programmers)Article

Authors: Giuseppe Castagna ORCID

Twenty years ago, in an article titled "Covariance and contravariance:
conflict without a cause", I argued that covariant and contravariant specialization of method parameters in object-oriented programming had different purposes and deduced that, not only they could, but actually they should both coexist in the same language.
In this work I reexamine the result of that article in the light of recent advances in (sub-)typing theory and programming languages, taking a fresh look at this old issue.
Actually, the revamping of this problem is just an excuse for writing an essay that aims at explaining sophisticated type-theoretic concepts, in simple terms and by examples, to undergraduate computer science students and/or willing functional programmers.
Finally, I took advantage of this opportunity to describe some undocumented advanced techniques of type-systems implementation that are known only to few insiders that dug in the code of some compilers: therefore, even expert language designers and implementers may find this work worth of reading.

Comment: This is a corrected version of the paper arXiv:1809.01427v7 published originally on Feb. 13, 2020


Volume: Volume 16, Issue 1
Secondary volumes: Special Issue in Memory of Corrado Böhm
Published on: February 22, 2022
Accepted on: September 3, 2019
Submitted on: September 7, 2018
Keywords: Computer Science - Programming Languages

3 Documents citing this article

Consultation statistics

This page has been seen 2349 times.
This article's PDF has been downloaded 866 times.