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.2015.174
URN: urn:nbn:de:0030-drops-52305
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2015/5230/
Lee, Joseph ;
Aldrich, Jonathan ;
Shaw, Troy ;
Potanin, Alex
A Theory of Tagged Objects
Abstract
Foundational models of object-oriented constructs typically model objects as records with a structural type. However, many object-oriented languages are class-based; statically-typed formal models of these languages tend to sacrifice the foundational nature of the record-based models, and in addition cannot express dynamic class loading or creation. In this paper, we explore how to model statically-typed object-oriented languages that support dynamic class creation using foundational constructs of type theory. We start with an extensible tag construct motivated by type theory, and adapt it to support static reasoning about class hierarchy and the tags supported by each object. The result is a model that better explains the relationship between object-oriented and functional programming paradigms, suggests a useful enhancement to functional programming languages, and paves the way for more expressive statically typed object-oriented languages. In that vein, we describe the design and implementation of the Wyvern language, which leverages our theory.
BibTeX - Entry
@InProceedings{lee_et_al:LIPIcs:2015:5230,
author = {Joseph Lee and Jonathan Aldrich and Troy Shaw and Alex Potanin},
title = {{A Theory of Tagged Objects}},
booktitle = {29th European Conference on Object-Oriented Programming (ECOOP 2015)},
pages = {174--197},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-939897-86-6},
ISSN = {1868-8969},
year = {2015},
volume = {37},
editor = {John Tang Boyland},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
address = {Dagstuhl, Germany},
URL = {http://drops.dagstuhl.de/opus/volltexte/2015/5230},
URN = {urn:nbn:de:0030-drops-52305},
doi = {10.4230/LIPIcs.ECOOP.2015.174},
annote = {Keywords: objects, classes, tags, nominal and structural types}
}
Keywords: |
|
objects, classes, tags, nominal and structural types |
Collection: |
|
29th European Conference on Object-Oriented Programming (ECOOP 2015) |
Issue Date: |
|
2015 |
Date of publication: |
|
29.06.2015 |