Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrating Nominal and Structural Subtyping (ECOOP '08) #25

Open
brianhempel opened this issue Mar 8, 2017 · 0 comments
Open

Integrating Nominal and Structural Subtyping (ECOOP '08) #25

brianhempel opened this issue Mar 8, 2017 · 0 comments
Labels

Comments

@brianhempel
Copy link
Contributor

brianhempel commented Mar 8, 2017

Donna Malayeri and Jonathan Aldrich (ECOOP '08)

Nominal and structural subtyping each have their own strengths and weaknesses. Nominal subtyping allows programmers to explicitly express design intent, and, when types are associated with run time tags, enables run-time type tests and external method dispatch. On the other hand, structural subtyping is flexible and compositional, allowing unanticipated reuse. To date, nearly all object-oriented languages fully support one subtyping paradigm or the other.

In this paper, we describe a core calculus for a language that integrates the key aspects of nominal and structural subtyping in a unified framework. We have also merged the flexibility of structural subtyping with statically typechecked external methods, a novel combination. We prove type safety for this language and illustrate its practical utility through examples that are not easily expressed in other languages. Our work provides a clean foundation for the design of future languages that enjoy the benefits of both nominal and structural subtyping.

https://lindydonna.com/public/ecoop08.pdf

@brianhempel brianhempel changed the title Integrating Nominal and Structural Subtyping Integrating Nominal and Structural Subtyping (ECOOP '08) Mar 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant