Applicative bidirectional programming mixing lenses and semantic bidirectionalization

Kazutaka Matsuda, Meng Wang

Research output: Contribution to journalArticle (Academic Journal)peer-review

352 Downloads (Pure)


A bidirectional transformation is a pair of mappings between source and view data objects, one in each direction. When the view is modified, the source is updated accordingly with respect to some laws. One way to reduce the development and maintenance effort of bidirectional transformations is to have specialized languages in which the resulting programs are bidirectional by construction—giving rise to the paradigm of bidirectional programming.

In this paper, we develop a framework for applicative-style and higher-order bidirectional programming, in which we can write bidirectional transformations as unidirectional programs in standard functional languages, opening up access to the bundle of language features previously only available to conventional unidirectional languages. Our framework essentially bridges two very different approaches of bidirectional programming, namely the lens framework and Voigtländer’s semantic bidirectionalization, creating a new programming style that is able to obtain benefits from both.
Original languageEnglish
Article numbere15
Number of pages49
JournalJournal of Functional Programming
Early online date21 Jun 2018
Publication statusPublished - 2018

Structured keywords

  • Programming Languages


Dive into the research topics of 'Applicative bidirectional programming mixing lenses and semantic bidirectionalization'. Together they form a unique fingerprint.

Cite this