|
|
|
|
|
Bidirectional Programming Languages Nate Foster The need to edit
data through a view arises in a host of applications across many different
areas of computing. However, since
most systems have only limited support for updatable views, they usually have
to be implemented using two separate programs---one to compute the view from
the source, and another to handle updates. This rudimentary design makes
programming tedious, reasoning difficult, and creates a maintenance
nightmare. In this talk, I will
present bidirectional programming languages, which provide an elegant and
effective mechanism for describing updatable views. Unlike programs in ordinary languages,
which only work in one direction, programs in a bidirectional language can be
run both forwards and backwards. When
read from left to right, they describe functions that map sources to
views. When read from right to left,
the same programs describe functions that map updated views back to updated
sources. Besides eliminating redundancy,
these languages can be designed to ensure correctness, guaranteeing by
construction that the two transformations work well together. Starting with
foundations, I will describe a general semantic space of well-behaved
bidirectional transformations called lenses.
Then, building on this framework, I will present a specific language
for writing lenses on string data, with syntax and a type system based on the
familiar regular operators (union, concatenation, and Kleene star). Finally, I will present a collection of
extensions addressing the subtle complications that arise when lenses are
used to manipulate ordered, ignorable, and confidential data. ______ Nate Foster will receive his PhD in Computer and
Information Science from the University of Pennsylvania in the summer of
2009. His research centers around
problems in programming languages, data management, and security. Before coming to Penn, he studied at the
University of Cambridge (MPhil in History and Philosophy of Science) and
Williams College (BA in Computer Science).
He has also worked as an intern at INRIA Rhone-Alpes and IBM
Research. His dissertation was
supported by an NSF Graduate Research Fellowship and was recently selected as
a winner of Penn's Rubinoff Award. Host: Michael Gennert Refreshments will be served. Last modified March 17, 2009 |