Journal of the ACM (JACM)
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
ESOP '94 Selected papers of ESOP '94, the 5th European symposium on Programming
Tupling calculation eliminates multiple data traversals
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Update semantics of relational views
ACM Transactions on Database Systems (TODS)
On the correct translation of update operations on relational views
ACM Transactions on Database Systems (TODS)
The Clio project: managing heterogeneity
ACM SIGMOD Record
Specification of Graph Translators with Triple Graph Grammars
WG '94 Proceedings of the 20th International Workshop on Graph-Theoretic Concepts in Computer Science
Monotonic complements for independent data warehouses
The VLDB Journal — The International Journal on Very Large Data Bases
On the computation of relational view complements
ACM Transactions on Database Systems (TODS)
Embedding an interpreted language using higher-order functions and types
Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators
An Order-Based Theory of Updates for Closed Database Views
Annals of Mathematics and Artificial Intelligence
PADS: a domain-specific language for processing ad hoc data
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Journal of Functional Programming
Relational lenses: a language for updatable views
Proceedings of the twenty-fifth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
biXid: a bidirectional transformation language for XML
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
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
Exploiting schemas in data synchronization
Journal of Computer and System Sciences
Bidirectionalization transformation based on automatic derivation of view complement functions
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Towards automatic model synchronization from model transformations
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Boomerang: resourceful lenses for string data
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Information Systems
A programmable editor for developing structured documents based on bidirectional transformations
Higher-Order and Symbolic Computation
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
Type-based specialization of xml transformations
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
From spreadsheets to relational databases and back
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
The essence of the iterator pattern
Journal of Functional Programming
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
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
Multi-language synchronization
ESOP'07 Proceedings of the 16th European conference on Programming
Libraries for generic programming in haskell
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
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
Bidirectionalizing graph transformations
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
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Gradual refinement: blending pattern matching with data abstraction
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Calculating with lenses: optimising bidirectional transformations
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Incremental updates for efficient bidirectional transformations
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Coupled schema transformation and data conversion for XML and SQL
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Bidirectional model transformations in QVT: semantic issues and open questions
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
Programming language approaches to bidirectional transformation
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Semantic bidirectionalization revisited
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
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.