{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,7,30]],"date-time":"2025-07-30T15:36:22Z","timestamp":1753889782384,"version":"3.41.2"},"reference-count":0,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","license":[{"start":{"date-parts":[[2022,2,22]],"date-time":"2022-02-22T00:00:00Z","timestamp":1645488000000},"content-version":"am","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,2,22]],"date-time":"2022-02-22T00:00:00Z","timestamp":1645488000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,2,22]],"date-time":"2022-02-22T00:00:00Z","timestamp":1645488000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"accepted":{"date-parts":[[2025,4,1]]},"abstract":"<jats:p>Twenty years ago, in an article titled &amp;quot;Covariance and contravariance: conflict without a cause&amp;quot;, 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.<\/jats:p><jats:p>Comment: This is a corrected version of the paper arXiv:1809.01427v7 published   originally on Feb. 13, 2020<\/jats:p>","DOI":"10.23638\/lmcs-16(1:15)2020","type":"journal-article","created":{"date-parts":[[2025,4,3]],"date-time":"2025-04-03T17:38:55Z","timestamp":1743701935000},"source":"Crossref","is-referenced-by-count":0,"title":["Covariance and Controvariance: a fresh look at an old issue (a primer in advanced type systems for learning functional programmers)"],"prefix":"10.23638","volume":"Volume 16, Issue 1","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0951-7535","authenticated-orcid":false,"given":"Giuseppe","family":"Castagna","sequence":"first","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2022,2,22]]},"container-title":["Logical Methods in Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/arxiv.org\/pdf\/1809.01427v8","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/arxiv.org\/pdf\/1809.01427v8","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,4,3]],"date-time":"2025-04-03T17:38:55Z","timestamp":1743701935000},"score":1,"resource":{"primary":{"URL":"http:\/\/lmcs.episciences.org\/4809"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,2,22]]},"references-count":0,"URL":"https:\/\/doi.org\/10.23638\/lmcs-16(1:15)2020","relation":{"has-preprint":[{"id-type":"arxiv","id":"1809.01427v6","asserted-by":"subject"},{"id-type":"arxiv","id":"1809.01427v5","asserted-by":"subject"},{"id-type":"arxiv","id":"1809.01427v3","asserted-by":"subject"}],"is-same-as":[{"id-type":"arxiv","id":"1809.01427","asserted-by":"subject"},{"id-type":"doi","id":"10.48550\/arXiv.1809.01427","asserted-by":"subject"}]},"ISSN":["1860-5974"],"issn-type":[{"type":"electronic","value":"1860-5974"}],"subject":[],"published":{"date-parts":[[2022,2,22]]},"article-number":"4809"}}