Institute for Computer Research
Presents a Seminar on
"Bidirectional Programming Languages"
By: Nate Foster
Programming Languages and Databases Groups
Department of Computer & Information Science
University of Pennsylvania
Date: Thursday, March 5, 2009
Time: 11:00 a.m.
Place: University of Waterloo, Davis Centre, Room DC 1304
ABSTRACT:
The need to edit data through a view arises in a host of applications across many different areas in computing. Unfortunately support for updatable views in current systems is embarrassingly primative: they are typically defined using two separate programs---one to compute the view from the source and another to handle updates---a rudimentary design that is both error-prone and difficult to maintain.
In this talk, I will describe bidirectional programming languages, which provide an elegant and effective mechanism for describing updatable views. Every bidirectional program, when read from left to right, denotes an ordinary function that maps sources to views. When read from right to left, however, the very same program denotes an "update translator" that takes an updated view together with the original source and produces a new source that reflects the update. Starting from the foundations, I will identify a general semantic space of well-behaved bidirectional transformations called lenses. I will then describe a specific language for writing lenses on strings called Boomerang. Finally, I will describe a collection of extensions to the framework and the languages that address the subtle complications that arise when lenses are used to manipulate ordered, ignorable, and confidential data.
BIO:
Nate Foster will receive his PhD in Computer and Information Science from the University of Pennsylvania in the summer of 2009. He previously studied at Cambridge (MPhil) and Williams (BA) and has been a visitor at INRIA Rhone-Alpes and an intern at IBM research. His research interests include programming languages, data management, and security.
SPONSORED BY THE ONTARIO RESEARCH FUND (ORF) RESEARCH EXCELENCE PROJECT
"Software Service Engineering"