A language supporting polymorphism is a boon to programmers: they can express complex ideas once and reuse functions in a variety of situations. However, polymorphism is pain for compilers tasked with producing efficient code that manipulates concrete values.
This paper presents a new intermediate language that allows for efficient static compilation, while still supporting flexible polymorphism. Specifically, it permits polymorphism over not only the types of values, but also the representation of values, the arity of primitive machine functions, and the evaluation order of arguments—all three of which are useful in practice. The key insight is to encode information about a value’s calling convention in the kind of its type, rather than in the type itself.
this URL might only work when visiting from a https://dl.acm.org/doi/10.1145/3408986 URL.
Thu 16 JunDisplayed time zone: Pacific Time (US & Canada) change
13:30 - 14:50
|(ICFP 2020) Kinds Are Calling Conventions
Paul Downen University of Massachusetts Lowell, Zena M. Ariola University of Oregon, Simon Peyton Jones Microsoft Research, Richard A. Eisenberg TweagLink to publication DOI Authorizer link Pre-print
|(OOPSLA 2021) Study of the subtyping machine of nominal subtyping with variance
Ori Roth TechnionLink to publication DOI Authorizer link Pre-print
|(POPL 2021) Fully Abstract from Static to Gradual
|(POPL 2021) On the Semantic Expressiveness of Recursive Types