File Download
Links for fulltext
(May Require Subscription)
- Publisher Website: 10.4230/LIPIcs.ECOOP.2018.9
- Scopus: eid_2-s2.0-85052026214
- Find via
Supplementary
-
Citations:
- Scopus: 0
- Appears in Collections:
Conference Paper: Typed First-Class Traits
Title | Typed First-Class Traits |
---|---|
Authors | |
Keywords | traits extensible designs |
Issue Date | 2018 |
Publisher | Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik GmbH. The Journal's web site is located at hhttp://www.dagstuhl.de/publikationen/lipics/ |
Citation | The 32nd European Conference on Object-Oriented Programming (ECOOP 2018), Amsterdam, The Netherlands, 16-21 July 2018. In Millstein, T (ed.). LIPICS - Leibniz International Proceedings in Informatics, 2018, v. 109, article no. 9; pp. 9:1–9:28 How to Cite? |
Abstract | Many dynamically-typed languages (including JavaScript, Ruby, Python or Racket) support first-class classes, or related concepts such as first-class traits and/or mixins. In those languages classes are first-class values and, like any other values, they can be passed as an argument, or returned from a function. Furthermore first-class classes support dynamic inheritance: i.e. they can inherit from other classes at runtime, enabling programmers to abstract over the inheritance hierarchy. In contrast, type system limitations prevent most statically-typed languages from having first-class classes and dynamic inheritance. This paper shows the design of SEDEL: a polymorphic statically-typed language with first-class traits, supporting dynamic inheritance as well as conventional OO features such as dynamic dispatching and abstract methods. To address the challenges of type-checking first-class traits, SEDEL employs a type system based on the recent work on disjoint intersection types and disjoint polymorphism. The novelty of SEDEL over core disjoint intersection calculi are source level features for practical OO programming, including first-class traits with dynamic inheritance, dynamic dispatching and abstract methods. Inspired by Cook and Palsberg's work on the denotational semantics for inheritance, we show how to design a source language that can be elaborated into Alpuim et al.'s F_{i} (a core polymorphic calculus with records supporting disjoint polymorphism). We illustrate the applicability of SEDEL with several example uses for first-class traits, and a case study that modularizes programming language interpreters using a highly modular form of visitors. |
Persistent Identifier | http://hdl.handle.net/10722/301307 |
ISSN | 2023 SCImago Journal Rankings: 0.796 |
DC Field | Value | Language |
---|---|---|
dc.contributor.author | Bi, X | - |
dc.contributor.author | Dos Santos Oliveira, BC | - |
dc.date.accessioned | 2021-07-27T08:09:11Z | - |
dc.date.available | 2021-07-27T08:09:11Z | - |
dc.date.issued | 2018 | - |
dc.identifier.citation | The 32nd European Conference on Object-Oriented Programming (ECOOP 2018), Amsterdam, The Netherlands, 16-21 July 2018. In Millstein, T (ed.). LIPICS - Leibniz International Proceedings in Informatics, 2018, v. 109, article no. 9; pp. 9:1–9:28 | - |
dc.identifier.issn | 1868-8969 | - |
dc.identifier.uri | http://hdl.handle.net/10722/301307 | - |
dc.description.abstract | Many dynamically-typed languages (including JavaScript, Ruby, Python or Racket) support first-class classes, or related concepts such as first-class traits and/or mixins. In those languages classes are first-class values and, like any other values, they can be passed as an argument, or returned from a function. Furthermore first-class classes support dynamic inheritance: i.e. they can inherit from other classes at runtime, enabling programmers to abstract over the inheritance hierarchy. In contrast, type system limitations prevent most statically-typed languages from having first-class classes and dynamic inheritance. This paper shows the design of SEDEL: a polymorphic statically-typed language with first-class traits, supporting dynamic inheritance as well as conventional OO features such as dynamic dispatching and abstract methods. To address the challenges of type-checking first-class traits, SEDEL employs a type system based on the recent work on disjoint intersection types and disjoint polymorphism. The novelty of SEDEL over core disjoint intersection calculi are source level features for practical OO programming, including first-class traits with dynamic inheritance, dynamic dispatching and abstract methods. Inspired by Cook and Palsberg's work on the denotational semantics for inheritance, we show how to design a source language that can be elaborated into Alpuim et al.'s F_{i} (a core polymorphic calculus with records supporting disjoint polymorphism). We illustrate the applicability of SEDEL with several example uses for first-class traits, and a case study that modularizes programming language interpreters using a highly modular form of visitors. | - |
dc.language | eng | - |
dc.publisher | Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik GmbH. The Journal's web site is located at hhttp://www.dagstuhl.de/publikationen/lipics/ | - |
dc.relation.ispartof | LIPICS - Leibniz International Proceedings in Informatics | - |
dc.relation.ispartof | The 32nd European Conference on Object-Oriented Programming (ECOOP 2018) | - |
dc.rights | This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. | - |
dc.rights | © Xuan Bi and Bruno C. d. S. Oliveira | - |
dc.subject | traits | - |
dc.subject | extensible designs | - |
dc.title | Typed First-Class Traits | - |
dc.type | Conference_Paper | - |
dc.identifier.email | Dos Santos Oliveira, BC: bruno@cs.hku.hk | - |
dc.identifier.authority | Dos Santos Oliveira, BC=rp01786 | - |
dc.description.nature | published_or_final_version | - |
dc.identifier.doi | 10.4230/LIPIcs.ECOOP.2018.9 | - |
dc.identifier.scopus | eid_2-s2.0-85052026214 | - |
dc.identifier.hkuros | 323723 | - |
dc.identifier.volume | 109 | - |
dc.identifier.spage | 9:1 | - |
dc.identifier.epage | 9:28 | - |
dc.publisher.place | Germany | - |