Wyvern: a simple, typed, and pure object-oriented language
Title | Wyvern: a simple, typed, and pure object-oriented language |
Publication Type | Conference Proceedings |
Year of Publication | 2013 |
Authors | Ligia Nistor, Darya Kurilova, Stephanie Balzer, Benjamin Chung, Alex Potanin, Jonathan Aldrich |
Conference Name | MASPEGHI '13 Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance |
Date Published | 07/2013 |
Publisher | ACM New York, NY, USA ©2013 |
Conference Location | Montpellier, France |
ISBN Number | 978-1-4503-2046-7 |
Keywords | CMU, first-class classes, object-oriented, static type checking |
Abstract | The simplest and purest practical object-oriented language designs today are seen in dynamically-typed languages, such as Smalltalk and Self. Static types, however, have potential benefits for productivity, security, and reasoning about programs. In this paper, we describe the design of Wyvern, a statically typed, pure object-oriented language that attempts to retain much of the simplicity and expressiveness of these iconic designs. Our goals lead us to combine pure object-oriented and functional abstractions in a simple, typed setting. We present a foundational object-based language that we believe to be as close as one can get to simple typed lambda calculus while keeping object-orientation. We show how this foundational language can be translated to the typed lambda calculus via standard encodings. We then define a simple extension to this language that introduces classes and show that classes are no more than sugar for the foundational object-based language. Our future intention is to demonstrate that modules and other object-oriented features can be added to our language as not more than such syntactical extensions while keeping the object-oriented core as pure as possible. The design of Wyvern closely follows both historical and modern ideas about the essence of object-orientation, suggesting a new way to think about a minimal, practical, typed core language for objects. |
DOI | 10.1145/2489828.2489830 |
Citation Key | node-30250 |
Attachment | Size |
---|---|
bytes |