FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Update semantics of relational views
ACM Transactions on Database Systems (TODS)
Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special issue on POPL 2005
Bidirectionalization transformation based on automatic derivation of view complement functions
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Boomerang: resourceful lenses for string data
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Bidirectionalization for free! (Pearl)
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bidirectional Transformations: A Cross-Discipline Perspective
ICMT '09 Proceedings of the 2nd International Conference on Theory and Practice of Model Transformations
CSF '09 Proceedings of the 2009 22nd IEEE Computer Security Foundations Symposium
Combining syntactic and semantic bidirectionalization
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Matching lenses: alignment and view update
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
From state- to delta-based bidirectional model transformations
ICMT'10 Proceedings of the Third international conference on Theory and practice of model transformations
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Incremental updates for efficient bidirectional transformations
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Three complementary approaches to bidirectional programming
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
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. Over the years, a lot of effort has been made to offer better language support for programming such transformations, essentially allowing the programmers to construct one mapping of the pair and have the other automatically generated. As an alternative to creating specialized new languages, one can try to analyse and transform programs written in general purpose languages, and ``bidirectionalize" them. Among others, a technique termed as semantic bidirectionalization stands out in term of user-friendliness. The unidirectional program can be written using arbitrary language constructs, as long as the function is polymorphic and the language constructs respect parametricity. The free theorem that follows from the polymorphic type of the program allows a kind of forensic examination of the transformation, determining its effect without examining its implementation. This is convenient, in the sense that the programmer is not restricted to using a particular syntax; but it does require the transformation to be polymorphic. In this paper, we revisit the idea of semantic bidirectionalization and reveal the elegant principles behind the current state-of-the-art techniques. Guided by the findings, we derive much simpler implementations that scale easily.