Mon 20 - Fri 24 October 2014 Portland, Oregon, United States
Thu 23 Oct 2014 14:15 - 14:37 at Salon E - Languages Chair(s): Crista Lopes

Values need to be represented differently when interacting with certain language features. For example, an integer needs to take an object-like representation when interacting with erased generics, although, for performance reasons, it normally uses the direct representation. In order to simplify the work of programmers, languages like ML and Scala expose the high-level concept (the integer) and let the compiler handle representation and conversion.

This pattern appears in multiple language features such as value classes, specialization and multi-stage programming mechanisms: they all expose a concept which they later refine into multiple representations. Yet, their implementations are ad-hoc and entangle the core mechanism with assumptions about the alternative representation and the implementation of generics, thus losing sight of the general principle.

In this paper we present an elegant and minimalistic type-driven generalization that subsumes and improves the state-of-the-art representation transformations. In doing so, we make two key observations: (1) annotated types conveniently capture the semantics of using alternative representations and (2) local type inference can be used to automatically, reliably and optimally introduce the necessary conversions.

We validated our approach by implementing three language features in the Scala compiler: value classes, specialization via miniboxing and a simplified multi-stage programming mechanism. An encouraging result was that we were able to reimplement and extend value class functionality in the Scala compiler with the equivalent of two man-weeks of work, without reusing any code from the previous implementation.

Thu 23 Oct

13:30 - 15:00: OOPSLA - Languages at Salon E
Chair(s): Crista LopesUniversity of California, Irvine
oopsla2014141406380000013:30 - 13:52
Joscha DrechslerTechnische Universität Darmstadt, Guido SalvaneschiTU Darmstadt, Ragnar MogkTechnische Universität Darmstadt, Mira MeziniTechnical University of Darmstadt
Link to publication
oopsla2014141406515000013:52 - 14:15
Tillmann RendelUniversity of Marburg, Jonathan Immanuel BrachthäuserUniversity of Marburg, Klaus OstermannUniversity of Marburg
Link to publication
oopsla2014141406650000014:15 - 14:37
Vlad UrecheEPFL, Eugene BurmakoEPFL, Martin OderskyEcole Polytechnique Federale de Lausanne
Link to publication
oopsla2014141406785000014:37 - 15:00
Ralf MitschkeTechnical University of Darmstadt, Sebastian ErdwegTU Darmstadt, Mirko KohlerTechnical University of Darmstadt, Mira MeziniTechnical University of Darmstadt, Guido SalvaneschiTU Darmstadt
Link to publication