Corpus ID: 210023871

Retentive Lenses

  title={Retentive Lenses},
  author={Zirun Zhu and Zhixuan Yang and Hsiang-Shang Ko and Zhenjiang Hu},
Based on Foster et al.'s lenses, various bidirectional programming languages and systems have been developed for helping the user to write correct data synchronisers. The two well-behavedness laws of lenses, namely Correctness and Hippocraticness, are usually adopted as the guarantee of these systems. While lenses are designed to retain information in the source when the view is modified, well-behavedness says very little about the retaining of information: Hippocraticness only requires that… Expand
Bidirectional Programming for Parsing and Retentive Printing
This thesis reconciles the compactness of ASTs and printing quality by proposing retentive printing, which takes not only an AST but also a piece of original program text, so that there is no need to enrich ASTs with unnecessary information. Expand


Matching lenses: alignment and view update
A general framework of matching lenses that parameterizes lenses over arbitrary heuristics for calculating alignments is proposed, together with a set of "alignment combinators" that implement a variety of alignment strategies. Expand
Quotient lenses
This work proposes a general theory of QUOTIENT LENSES - bidirectional transformations that are well behaved modulo equivalence relations controlled by the programmer and presents a rich set of constructs for programming with CANONIZERS and for quotienting lenses by canonizers. Expand
Boomerang: resourceful lenses for string data
The essential property of resourcefulness is formalized-the correct use of keys to associate chunks in the input and output-by defining a refined semantic space of quasi-oblivious lenses, which several previously studied properties of lenses turn out to have compact characterizations in this space. Expand
Edit lenses
This work identifies a simple notion of "editable structure"--a set of states plus a monoid of edits with a partial monoid action on the states--and construct a semantic space of lenses between such structures, with natural laws governing their behavior. Expand
Resugaring: lifting evaluation sequences through syntactic sugar
This work shows how to compute reduction steps in terms of the surface syntax, and makes these statements about emulation and abstraction precise, prove that they hold in the formalism, and verify part of the system in Coq. Expand
BiFluX: A Bidirectional Functional Update Language for XML
A bidirectional XML updatelanguage called BIFLUX (BIdirectional FunctionaL Updates for XML), inspired by the FLUX XML update language, is proposed, with a clear and well-behaved biddirectional semantics and a decidable static type system based on regular expression types. Expand
Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem
A novel approach to the view-update problem for tree-structured data: a domain-specific programming language in which all expressions denote bidirectional transformations on trees that map a concrete tree into a simplified abstract view and a modified abstract view to a correspondingly modified concrete tree. Expand
Delta Lenses over Inductive Types
This paper formalizes delta lenses over inductive types using dependent type theory and develops a point-free delta lens language with an explicit separation of shape and data. Expand
Incremental updates for efficient bidirectional transformations
This paper studies transformations that support incremental updates, and devise a constructive process to achieve this incrementality. Expand
An Algorithm for Layout Preservation in Refactoring Transformations
An algorithm for fully automatic source code reconstruction for source-to-source transformations, which preserves the layout and comments of the unaffected parts and reconstructs the indentation of the affected parts, using a set of clearly defined heuristic rules to handle comments. Expand