License: Creative Commons Attribution 3.0 Unported license (CC BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2020.27
URN: urn:nbn:de:0030-drops-131846
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2020/13184/
Xie, Ningning ;
Oliveira, Bruno C. d. S. ;
Bi, Xuan ;
Schrijvers, Tom
Row and Bounded Polymorphism via Disjoint Polymorphism
Abstract
Polymorphism and subtyping are important features in mainstream OO languages. The most common way to integrate the two is via ?_{< :} style bounded quantification. A closely related mechanism is row polymorphism, which provides an alternative to subtyping, while still enabling many of the same applications. Yet another approach is to have type systems with intersection types and polymorphism. A recent addition to this design space are calculi with disjoint intersection types and disjoint polymorphism. With all these alternatives it is natural to wonder how they are related.
This paper provides an answer to this question. We show that disjoint polymorphism can recover forms of both row polymorphism and bounded polymorphism, while retaining key desirable properties, such as type-safety and decidability. Furthermore, we identify the extra power of disjoint polymorphism which enables additional features that cannot be easily encoded in calculi with row polymorphism or bounded quantification alone. Ultimately we expect that our work is useful to inform language designers about the expressive power of those common features, and to simplify implementations and metatheory of feature-rich languages with polymorphism and subtyping.
BibTeX - Entry
@InProceedings{xie_et_al:LIPIcs:2020:13184,
author = {Ningning Xie and Bruno C. d. S. Oliveira and Xuan Bi and Tom Schrijvers},
title = {{Row and Bounded Polymorphism via Disjoint Polymorphism}},
booktitle = {34th European Conference on Object-Oriented Programming (ECOOP 2020)},
pages = {27:1--27:30},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-154-2},
ISSN = {1868-8969},
year = {2020},
volume = {166},
editor = {Robert Hirschfeld and Tobias Pape},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/opus/volltexte/2020/13184},
URN = {urn:nbn:de:0030-drops-131846},
doi = {10.4230/LIPIcs.ECOOP.2020.27},
annote = {Keywords: Intersection types, bounded polymorphism, row polymorphism}
}
Keywords: |
|
Intersection types, bounded polymorphism, row polymorphism |
Collection: |
|
34th European Conference on Object-Oriented Programming (ECOOP 2020) |
Issue Date: |
|
2020 |
Date of publication: |
|
06.11.2020 |
Supplementary Material: |
|
https://github.com/xnning/Row-and-Bounded-via-Disjoint |