Synthesizing bijective lenses

Abstract

Bidirectional transformations between different data representations occur frequently in modern software systems. They appear as serializers and deserializers, as parsers and pretty printers, as database views and view updaters, and as a multitude of different kinds of ad hoc data converters. Manually building bidirectional transformations---by writing two separate functions that are intended to be inverses---is tedious and error prone. A better approach is to use a domain-specific language in which both directions can be written as a single expression. However, these domain-specific languages can be difficult to program in, requiring programmers to manage fiddly details while working in a complex type system.

Document Details

Document Type
Pub Defense Publication
Publication Date
Dec 27, 2017
Source ID
10.1145/3158089

Entities

People

  • Anders Miltner
  • Benjamin C. Pierce
  • David Walker
  • Kathleen Fisher
  • Steve Zdancewic

Organizations

  • Defense Advanced Research Projects Agency
  • Office of Naval Research
  • Princeton University
  • Tufts University
  • University of Pennsylvania

Tags

Fields of Study

  • Computer science
  • Engineering

Readers

  • Computational Linguistics
  • Computer Science/Computer Engineering/Data Science/Digital Signal Processing.
  • Team-Based Human-Centered Cognitive Task Decision Making and Information Performance.