Incremental updates for efficient bidirectional transformations

Meng Wang, Jeremy Gibbons, Nicolas Wu

Research output: Chapter in Book/Report/Conference proceedingConference Contribution (Conference Proceeding)

8 Downloads (Pure)

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. The key to handling large data objects that are subject to relatively small modifications is to process the updates incrementally. Incrementality has been explored in the semi-structured settings of relational databases and graph transformations; this flexibility in structure makes it relatively easy to divide the data into separate parts that can be transformed and updated independently. The same is not true if the data is to be encoded with more general-purpose algebraic datatypes, with transformations defined as functions: dividing data into well-typed separate parts is tricky, and recursions typically create interdependencies. In this paper, we study transformations that support incremental updates, and devise a constructive process to achieve this incrementality.

Original languageEnglish
Title of host publicationICFP '11 Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
PublisherAssociation for Computing Machinery (ACM)
Pages392-403
DOIs
Publication statusPublished - 2011

Structured keywords

  • Programming Languages

Keywords

  • bidirectional programming
  • functional programming
  • incremental computing
  • program transformation
  • view-update problem

Cite this

Wang, M., Gibbons, J., & Wu, N. (2011). Incremental updates for efficient bidirectional transformations. In ICFP '11 Proceedings of the 16th ACM SIGPLAN international conference on Functional programming (pp. 392-403). Association for Computing Machinery (ACM). https://doi.org/10.1145/2034773.2034825