"Resugaring: Lifting Languages through Syntactic Sugar"
Tuesday, April 24, 2018, at 10:00 A.M.
Room 316 (CIT 3rd Floor)
Syntactic sugar is pervasive in language technology. Programmers use it to shrink the size of a core language; to define domain-specific languages; and even to extend their language. Unfortunately, when syntactic sugar is eliminated by transformation, it obscures the relationship between the user's source program and the transformed program. First, it obscures the evaluation steps the program takes when it runs, since these evaluation steps happen in the core (desugared) language rather than the surface (pre-desugaring) language the program was written in. Second, it obscures the scoping rules for the surface language, making it difficult for IDEs and other tools to obtain binding information. And finally, it obscures the types of surface programs, which can result in type errors that reference terms the programmer did not write. I address these problems by showing how evaluation steps, scoping rules, and type rules can all be lifted---or *resugared*---from core to surface languages, thus restoring the abstraction provided by syntactic sugar.
Host: Professor Shriram Krishnamurthi