Properties and update semantics of consistent views
ACM Transactions on Database Systems (TODS)
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)
On propagation of deletions and annotations through views
Proceedings of the twenty-first ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Embedding an interpreted language using higher-order functions and types
Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators
A programmable editor for developing structured documents based on bidirectional transformations
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
FUNCTIONAL PEARL Pickler combinators
Journal of Functional Programming
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
There and back again: arrows for invertible programming
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
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
Bidirectional interpretation of XQuery
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
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
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
Towards an Algebraic Theory of Bidirectional Transformations
ICGT '08 Proceedings of the 4th international conference on Graph Transformations
Algebraic Models for Bidirectional Model Synchronization
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
A Landscape of Bidirectional Model Transformations
Generative and Transformational Techniques in Software Engineering II
Bidirectionalization for free! (Pearl)
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards a compositional approach to model transformation for software development
Proceedings of the 2009 ACM symposium on Applied Computing
Model-versioning-in-the-large: Algebraic foundations and the tile notation
CVSM '09 Proceedings of the 2009 ICSE Workshop on Comparison and Versioning of Software Models
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
Bidirectionalizing graph transformations
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Bidirectional programming languages
Bidirectional programming languages
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dagstuhl seminar on bidirectional transformations (BX)
ACM SIGMOD Record
Incremental updates for efficient bidirectional transformations
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
DBPL'05 Proceedings of the 10th international conference on Database Programming Languages
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lenses, fibrations and universal translations
Mathematical Structures in Computer Science
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Maintaining invariant traceability through bidirectional transformations
Proceedings of the 34th International Conference on Software Engineering
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
When data, knowledge and processes meet together
RR'12 Proceedings of the 6th international conference on Web Reasoning and Rule Systems
Hi-index | 0.00 |
Computing is full of situations where two different structures must be "connected" in such a way that updates to each can be propagated to the other. This is a generalization of the classical view update problem, which has been studied for decades in the database community [11, 2, 22]; more recently, related problems have attracted considerable interest in other areas, including programming languages [42, 28, 34, 39, 4, 7, 33, 16, 1, 37, 35, 47, 49] software model transformation [43, 50, 44, 45, 12, 13, 14, 24, 25, 10, 51], user interfaces [38] and system configuration [36]. See [18, 17, 10, 30] for recent surveys. Among the fruits of this cross-pollination has been the development of a linguistic perspective on the problem. Rather than taking some view definition language as fixed (e.g., choosing some subset of relational algebra) and looking for tractable ways of "inverting" view definitions to propagate updates from view to source [9], we can directly design new bidirectional programming languages in which every expression defines a pair of functions mapping updates on one structure to updates on the other. Such structures are often called lenses [18]. The foundational theory of lenses has been studied extensively [20, 47, 26, 32, 48, 40, 15, 31, 46, 41, 21, 27], and lens-based language designs have been developed in several domains, including strings [5, 19, 3, 36], trees [18, 28, 39, 35, 29], relations [6], graphs [23], and software models [43, 50, 44, 12, 13, 14, 24, 25, 8]. These languages share some common elements with modern functional languages---in particular, they come with very expressive type systems. In other respects, they are rather novel and surprising. This tutorial surveys recent developments in the theory of lenses and the practice of bidirectional programming languages.