Three complementary approaches to bidirectional programming

Nate Foster, Kazutaka Matsuda, Janis Voigtländer

Research output: Chapter in Book/Report/Conference proceedingConference contribution

22 Citations (Scopus)


This paper surveys three distinct approaches to bidirectional programming. The first approach, syntactic bidirectionalization, takes a program describing the forward transformation as input and calculates a well-behaved reverse transformation. The second approach, semantic bidirectionalization, is similar, but takes the forward transformation itself as input rather than a program describing it. It requires the transformation to be a polymorphic function and uses parametricity and free theorems in the proof of well-behavedness. The third approach, based on bidirectional combinators, focuses on the use of types to ensure well-behavedness and special constructs for dealing with alignment problems. In presenting these approaches, we pay particular attention to use of complements, which are structures that represent the information discarded by the transformation in the forward direction.

Original languageEnglish
Title of host publicationGeneric and Indexed Programming -International Spring School, SSGIP 2010, Revised Lectures
Number of pages46
Publication statusPublished - 2012 Aug 27
EventInternational Spring School on Generic and Indexed Programming, SSGIP 2010 - Oxford, United Kingdom
Duration: 2012 Mar 222012 Mar 26

Publication series

NameLecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
Volume7470 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349


OtherInternational Spring School on Generic and Indexed Programming, SSGIP 2010
Country/TerritoryUnited Kingdom

ASJC Scopus subject areas

  • Theoretical Computer Science
  • Computer Science(all)


Dive into the research topics of 'Three complementary approaches to bidirectional programming'. Together they form a unique fingerprint.

Cite this