Applicative bidirectional programming with lenses

Kazutaka Matsuda, Meng Wang

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

9 Citations (Scopus)

Abstract

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 bag benefits from both.

Original languageEnglish
Title of host publicationICFP 2015 - Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming
EditorsKathleen Fisher, John Reppy
PublisherAssociation for Computing Machinery
Pages62-74
Number of pages13
ISBN (Electronic)9781450336697
DOIs
Publication statusPublished - 2015 Aug 29
Event20th ACM SIGPLAN International Conference on Functional Programming, ICFP 2015 - Vancouver, Canada
Duration: 2015 Aug 312015 Sep 2

Publication series

NameProceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP
Volume2015-August

Other

Other20th ACM SIGPLAN International Conference on Functional Programming, ICFP 2015
CountryCanada
CityVancouver
Period15/8/3115/9/2

Keywords

  • Bidirectional programming
  • Bidirectionalization
  • Free theorem
  • Functional programming
  • Haskell
  • Lens

ASJC Scopus subject areas

  • Software

Fingerprint Dive into the research topics of 'Applicative bidirectional programming with lenses'. Together they form a unique fingerprint.

Cite this