Title | Wyvern: A Simple, Typed, and Pure Object-oriented Language |
Publication Type | Conference Paper |
Year of Publication | 2013 |
Authors | Nistor, Ligia, Kurilova, Darya, Balzer, Stephanie, Chung, Benjamin, Potanin, Alex, Aldrich, Jonathan |
Conference Name | Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance |
Publisher | ACM |
Conference Location | Montpellier, France |
ISBN Number | 978-1-4503-2046-7 |
Keywords | A Language and Framework for Development of Secure Mobile Applications, CMU, first-class classes, Human Behavior, object-oriented, Scalability and Composability, science of security, SoS Lablet, 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. |
URL | http://doi.acm.org/10.1145/2489828.2489830 |
DOI | 10.1145/2489828.2489830 |
Citation Key | Nistor:2013:WST:2489828.2489830 |