Programmable Semantic Fragments: The Design and Implementation of Typy
Title | Programmable Semantic Fragments: The Design and Implementation of Typy |
Publication Type | Conference Paper |
Year of Publication | 2016 |
Authors | Omar, Cyrus, Aldrich, Jonathan |
Conference Name | Proceedings of the 2016 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences |
Date Published | October 2016 |
Publisher | ACM |
Conference Location | New York, NY, USA |
ISBN Number | 978-1-4503-4446-3 |
Keywords | bidirectional typechecking, composability, compositionality, foreign function interfaces, metaprogramming, Pattern matching, pubcrawl |
Abstract | This paper introduces typy, a statically typed programming language embedded by reflection into Python. typy features a fragmentary semantics, i.e. it delegates semantic control over each term, drawn from Python's fixed concrete and abstract syntax, to some contextually relevant user-defined semantic fragment. The delegated fragment programmatically 1) typechecks the term (following a bidirectional protocol); and 2) assigns dynamic meaning to the term by computing a translation to Python. We argue that this design is expressive with examples of fragments that express the static and dynamic semantics of 1) functional records; 2) labeled sums (with nested pattern matching a la ML); 3) a variation on JavaScript's prototypal object system; and 4) typed foreign interfaces to Python and OpenCL. These semantic structures are, or would need to be, defined primitively in conventionally structured languages. We further argue that this design is compositionally well-behaved. It avoids the expression problem and the problems of grammar composition because the syntax is fixed. Moreover, programs are semantically stable under fragment composition (i.e. defining a new fragment will not change the meaning of existing program components.) |
URL | http://doi.acm.org/10.1145/2993236.2993245 |
DOI | 10.1145/2993236.2993245 |
Citation Key | omar_programmable_2016 |