publications: - title: "LOOJ: Weaving LOOM into Java" author: - name: "Kim B. Bruce" link: "https://researchr.org/alias/kim-b.-bruce" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" year: "2004" doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=3086&spage=389" links: doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=3086&spage=389" tags: - "Java" - "weaving" researchr: "https://researchr.org/publication/BruceF04" cites: 0 citedby: 0 pages: "389-413" booktitle: "ECOOP 2004 - Object-Oriented Programming, 18th European Conference, Oslo, Norway, June 14-18, 2004, Proceedings" editor: - name: "Martin Odersky" link: "http://lampwww.epfl.ch/~odersky/" volume: "3086" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-22159-X" kind: "inproceedings" key: "BruceF04" - title: "Provenance: a future history" author: - name: "James Cheney" link: "https://researchr.org/alias/james-cheney" - name: "Stephen Chong" link: "http://people.seas.harvard.edu/~chong/" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Margo I. Seltzer" link: "https://researchr.org/alias/margo-i.-seltzer" - name: "Stijn Vansummeren" link: "https://researchr.org/alias/stijn-vansummeren" year: "2009" doi: "http://doi.acm.org/10.1145/1639950.1640064" links: doi: "http://doi.acm.org/10.1145/1639950.1640064" tags: - "history" researchr: "https://researchr.org/publication/CheneyCFSV09" cites: 0 citedby: 0 pages: "957-964" booktitle: "Companion to the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, October 25-29, 2009, Orlando, Florida, USA" editor: - name: "Shail Arora" link: "https://researchr.org/alias/shail-arora" - name: "Gary T. Leavens" link: "https://researchr.org/alias/gary-t.-leavens" publisher: "ACM" isbn: "978-1-60558-768-4" kind: "inproceedings" key: "CheneyCFSV09" - title: "Mechanized Metatheory for the Masses: The PoplMark Challenge" author: - name: "Brian E. Aydemir" link: "https://researchr.org/alias/brian-e.-aydemir" - name: "Aaron Bohannon" link: "https://researchr.org/alias/aaron-bohannon" - name: "Matthew Fairbairn" link: "https://researchr.org/alias/matthew-fairbairn" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Peter Sewell" link: "https://researchr.org/alias/peter-sewell" - name: "Dimitrios Vytiniotis" link: "http://" - name: "Geoffrey Washburn" link: "https://researchr.org/alias/geoffrey-washburn" - name: "Stephanie Weirich" link: "http://www.cis.upenn.edu/~sweirich/" - name: "Steve Zdancewic" link: "https://researchr.org/alias/steve-zdancewic" year: "2005" doi: "http://dx.doi.org/10.1007/11541868_4" abstract: "How close are we to a world where every paper on programming languages is accompanied by an electronic appendix with machine-checked proofs? We propose an initial set of benchmarks for measuring progress in this area. Based on the metatheory of System F<:, a typed lambda-calculus with second-order polymorphism, subtyping, and records, these benchmarks embody many aspects of programming languages that are challenging to formalize: variable binding at both the term and type levels, syntactic forms with variable numbers of components (including binders), and proofs demanding complex induction principles. We hope that these benchmarks will help clarify the current state of the art, provide a basis for comparing competing technologies, and motivate further research." links: doi: "http://dx.doi.org/10.1007/11541868_4" tags: - "programming languages" - "rule-based" - "variable binding" - "principles" - "type system" - "C++" - "metatheory" - "subtyping" - "programming" - "state machines" researchr: "https://researchr.org/publication/AydemirBFFPSVWWZ05" cites: 0 citedby: 0 pages: "50-65" booktitle: "Theorem Proving in Higher Order Logics, 18th International Conference, TPHOLs 2005, Oxford, UK, August 22-25, 2005, Proceedings" editor: - name: "Joe Hurd" link: "https://researchr.org/alias/joe-hurd" - name: "Thomas F. Melham" link: "https://researchr.org/alias/thomas-f.-melham" volume: "3603" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-28372-2" kind: "inproceedings" key: "AydemirBFFPSVWWZ05" - title: "An Algebraic Approach to View Maintenance for XQuery" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Ravi Konuru" link: "https://researchr.org/alias/ravi-konuru" - name: "Jérôme Siméon" link: "https://researchr.org/alias/j%C3%A9r%C3%B4me-sim%C3%A9on" - name: "Lionel Villard" link: "https://researchr.org/alias/lionel-villard" year: "2008" doi: "http://gemo.futurs.inria.fr/events/PLANX2008//papers/p31.pdf" links: doi: "http://gemo.futurs.inria.fr/events/PLANX2008//papers/p31.pdf" tags: - "XQuery" - "maintenance" - " algebra" - "systematic-approach" researchr: "https://researchr.org/publication/FosterKSV08" cites: 0 citedby: 0 booktitle: "PLAN-X 2008, Programming Language Technologies for XML, An ACM SIGPLAN Workshop colocated with POPL 2008, San Francisco, California, USA, January 9, 2008" kind: "inproceedings" key: "FosterKSV08" - title: "Bidirectional Programming Languages" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" year: "2009" month: "December" abstract: "The need to edit source data through a view arises in a host of applications across many different areas of computing. Unfortunately, few existing systems provide support for updatable views. In practice, when they are needed, updatable views are usually implemented using two separate programs: one that computes the view from the source and another that handles updates. This rudimentary design is tedious for programmers, difficult to reason about, and a nightmare to maintain. This dissertation presents bidirectional programming languages, which provide an elegant and effective mechanism for describing updatable views. Unlike programs written in an ordinary language, which only work in one direction, programs in a bidirectional language can be run both forwards and backwards: from left to right, they describe functions that map sources to views, and from right to left, they describe functions that map updated views back to updated sources. Besides eliminating redundancy, these languages can be designed to ensure correctness, guaranteeing by construction that the two functions work well together. Starting from the foundations, we define a general semantic space of well-behaved bidirectional transformations called lenses. Then, building on this foundation, we describe a particular language for defining lenses on strings with syntax based on the familiar regular operators (union, concatenation, and Kleene star). We present extensions to the basic framework that address the subtle complications that arise when lenses are used to manipulate, data containing unimportant details, ordered data, and confidential data." links: "penn libraries": "http://repository.upenn.edu/edissertations/56/" tags: - "programming languages" - "model-to-model transformation" - "bidirectional model transformations" - "rule-based" - "bidirectional transformation" - "data-flow language" - "application framework" - "redundancy" - "bidirectional model transformation" - "transformation language" - "language design" - "data-flow programming" - "data-flow" - "source-to-source" - "transformation system" - "model transformation" - "programming" - "design" - "open-source" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/foster%3Alenses" cites: 0 citedby: 0 school: "University of Pennsylvania" advisor: - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" kind: "phdthesis" key: "foster:lenses" - title: "Matching lenses: alignment and view update" author: - name: "Davi M. J. Barbosa" link: "https://researchr.org/alias/davi-m.-j.-barbosa" - name: "Julien Cretin" link: "https://researchr.org/alias/julien-cretin" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Michael Greenberg" link: "https://researchr.org/alias/michael-greenberg" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" year: "2010" doi: "http://doi.acm.org/10.1145/1863543.1863572" links: doi: "http://doi.acm.org/10.1145/1863543.1863572" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/icfp/BarbosaCFGP10" tags: - "C++" researchr: "https://researchr.org/publication/BarbosaCFGP10" cites: 0 citedby: 0 pages: "193-204" booktitle: "Proceeding of the 15th ACM SIGPLAN international conference on Functional programming, ICFP 2010, Baltimore, Maryland, USA, September 27-29, 2010" editor: - name: "Paul Hudak" link: "https://researchr.org/alias/paul-hudak" - name: "Stephanie Weirich" link: "https://researchr.org/alias/stephanie-weirich" publisher: "ACM" isbn: "978-1-60558-794-3" kind: "inproceedings" key: "BarbosaCFGP10" - title: "Three Complementary Approaches to Bidirectional Programming" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Kazutaka Matsuda" link: "http://www.kb.ecei.tohoku.ac.jp/~kztk/" - name: "Janis Voigtländer" link: "http://www.iai.uni-bonn.de/~jv/" year: "2010" doi: "http://dx.doi.org/10.1007/978-3-642-32202-0_1" abstract: "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. " links: doi: "http://dx.doi.org/10.1007/978-3-642-32202-0_1" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ssgip/FosterMV10" researchr: "https://researchr.org/publication/FosterMV10" cites: 0 citedby: 0 pages: "1-46" booktitle: "Generic and Indexed Programming - International Spring School, SSGIP 2010, Oxford, UK, March 22-26, 2010, Revised Lectures" editor: - name: "Jeremy Gibbons" link: "http://www.comlab.ox.ac.uk/jeremy.gibbons/" volume: "7470" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-32201-3" kind: "inproceedings" key: "FosterMV10" - title: "Combinators for bi-directional tree transformations: a linguistic approach to the view update problem" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Michael B. Greenwald" link: "https://researchr.org/alias/michael-b.-greenwald" - name: "Jonathan T. Moore" link: "https://researchr.org/alias/jonathan-t.-moore" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Alan Schmitt" link: "https://researchr.org/alias/alan-schmitt" year: "2005" doi: "http://doi.acm.org/10.1145/1040305.1040325" links: doi: "http://doi.acm.org/10.1145/1040305.1040325" tags: - "C++" - "systematic-approach" - "transformation" researchr: "https://researchr.org/publication/FosterGMPS05" cites: 0 citedby: 0 pages: "233-246" booktitle: "Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2005, Long Beach, California, USA, January 12-14, 2005" editor: - name: "Jens Palsberg" link: "https://researchr.org/alias/jens-palsberg" - name: "Martín Abadi" link: "https://researchr.org/alias/mart%C3%ADn-abadi" publisher: "ACM" isbn: "1-58113-830-X" kind: "inproceedings" key: "FosterGMPS05" - title: "Bidirectional Transformations: A Cross-Discipline Perspective" author: - name: "Krzysztof Czarnecki" link: "http://www.swen.uwaterloo.ca/~kczarnec/" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Zhenjiang Hu" link: "http://research.nii.ac.jp/~hu/" - name: "ralf-lämmel" link: "https://researchr.org/alias/ralf-l%C3%A3%C2%A4mmel" - name: "andy-schürr" link: "https://researchr.org/alias/andy-sch%C3%A3%C2%BCrr" - name: "James F. Terwilliger" link: "https://researchr.org/alias/james-f.-terwilliger" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-02408-5_19" abstract: " The GRACE International Meeting on Bidirectional Transformations was held in December 2008 near Tokyo, Japan. The meeting brought together researchers and practitioners from a variety of sub-disciplines of computer science to share research efforts and help create a new community. In this report, we survey the state of the art and summarize the technical presentations delivered at the meeting. We also describe some insights gathered from our discussions and introduce a new effort to establish a benchmark for bidirectional transformations. " links: doi: "http://dx.doi.org/10.1007/978-3-642-02408-5_19" tags: - "bidirectional transformation" - "survey" - "e-science" - "transformation" researchr: "https://researchr.org/publication/CzarneckiFHLST09" cites: 142 citedby: 0 pages: "260-283" booktitle: "Theory and Practice of Model Transformations, Second International Conference, ICMT 2009, Zurich, Switzerland, June 29-30, 2009. Proceedings" editor: - name: "Richard F. Paige" link: "http://www-users.cs.york.ac.uk/~paige/" volume: "5563" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-02407-8" kind: "inproceedings" key: "CzarneckiFHLST09" - title: "Provenance and Data Synchronization" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Grigoris Karvounarakis" link: "https://researchr.org/alias/grigoris-karvounarakis" year: "2007" doi: "http://sites.computer.org/debull/A07dec/foster.pdf" links: doi: "http://sites.computer.org/debull/A07dec/foster.pdf" tags: - "synchronization" - "data-flow" researchr: "https://researchr.org/publication/FosterK07" cites: 0 citedby: 0 journal: "IEEE Data Eng. Bull." volume: "30" number: "4" pages: "13-21" kind: "article" key: "FosterK07" - title: "A Generic Programming Toolkit for PADS/ML: First-Class Upgrades for Third-Party Developers" author: - name: "Mary F. Fernández" link: "https://researchr.org/alias/mary-f.-fern%C3%A1ndez" - name: "Kathleen Fisher" link: "http://www.research.att.com/people/Fisher_Kathleen_S" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Michael Greenberg" link: "https://researchr.org/alias/michael-greenberg" - name: "Yitzhak Mandelbaum" link: "https://researchr.org/alias/yitzhak-mandelbaum" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-77442-6_10" links: doi: "http://dx.doi.org/10.1007/978-3-540-77442-6_10" tags: - "generic programming" - "programming" researchr: "https://researchr.org/publication/FernandezFFGM08" cites: 0 citedby: 0 pages: "133-149" booktitle: "Practical Aspects of Declarative Languages, 10th International Symposium, PADL 2008, San Francisco, CA, USA, January 7-8, 2008" editor: - name: "Paul Hudak" link: "https://researchr.org/alias/paul-hudak" - name: "David Scott Warren" link: "https://researchr.org/alias/david-scott-warren" volume: "4902" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-77441-9" kind: "inproceedings" key: "FernandezFFGM08" - title: "Boomerang: resourceful lenses for string data" author: - name: "Aaron Bohannon" link: "https://researchr.org/alias/aaron-bohannon" - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Alexandre Pilkiewicz" link: "https://researchr.org/alias/alexandre-pilkiewicz" - name: "Alan Schmitt" link: "https://researchr.org/alias/alan-schmitt" year: "2008" doi: "http://doi.acm.org/10.1145/1328438.1328487" abstract: "A lens is a bidirectional program. When read from left to right, it denotes an ordinary function that maps inputs to outputs. When read from right to left, it denotes an “update translator” that takes an input together with an updated output and produces a new input that reflects the update. Many variants of this idea have been explored in the literature, but none deal fully with ordered data. If, for example, an update changes the order of a list in the output, the items in the output list and the chunks of the input that generated them can be misaligned, leading to lost or corrupted data. We attack this problem in the context of bidirectional transfor- mations over strings, the primordial ordered data type. We first pro- pose a collection of bidirectional string lens combinators, based on familiar operations on regular transducers (union, concatena- tion, Kleene-star) and with a type system based on regular expres- sions. We then design a new semantic space of dictionary lenses, enriching the lenses of Foster et al. (2007b) with support for two additional combinators for marking “reorderable chunks” and their keys. To demonstrate the effectiveness of these primitives, we de- scribe the design and implementation of Boomerang, a full-blown bidirectional programming language with dictionary lenses at its core. We have used Boomerang to build transformers for complex real-world data formats including the SwissProt genomic database. We formalize the essential property of resourcefulness—the correct use of keys to associate chunks in the input and output—by defining a refined semantic space of quasi-oblivious lenses. Several previously studied properties of lenses turn out to have compact characterizations in this space." links: doi: "http://doi.acm.org/10.1145/1328438.1328487" tags: - "programming languages" - "rule-based" - "data-flow language" - "language design" - "type system" - "data-flow programming" - "data-flow" - "C++" - "lenses" - "programming" - "database" - "context-aware" - "design" researchr: "https://researchr.org/publication/BohannonFPPS08" cites: 0 citedby: 0 pages: "407-419" booktitle: "Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2008, San Francisco, California, USA, January 7-12, 2008" editor: - name: "George C. Necula" link: "https://researchr.org/alias/george-c.-necula" - name: "Philip Wadler" link: "http://homepages.inf.ed.ac.uk/wadler/" publisher: "ACM" isbn: "978-1-59593-689-9" kind: "inproceedings" key: "BohannonFPPS08" - title: "Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Michael B. Greenwald" link: "https://researchr.org/alias/michael-b.-greenwald" - name: "Jonathan T. Moore" link: "https://researchr.org/alias/jonathan-t.-moore" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Alan Schmitt" link: "https://researchr.org/alias/alan-schmitt" year: "2007" doi: "http://doi.acm.org/10.1145/1232420.1232424" abstract: "We propose 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. In one direction, these transformations—dubbed lenses—map a concrete tree into a simplified abstract view; in the other, they map a modified abstract view, together with the original concrete tree, to a correspondingly modified concrete tree. Our design emphasizes both robustness and ease of use, guaranteeing strong well-behavedness and totality properties for well-typed lenses. We begin by identifying a natural space of well-behaved bidirectional transformations over ar- bitrary structures, studying definedness and continuity in this setting. We then instantiate this semantic framework in the form of a collection of lens combinators that can be assembled to de- scribe bidirectional transformations on trees. These combinators include familiar constructs from functional programming (composition, mapping, projection, conditionals, recursion) together with some novel primitives for manipulating trees (splitting, pruning, merging, etc.). We illustrate the expressiveness of these combinators by developing a number of bidirectional list-processing trans- formations as derived forms. An extended example shows how our combinators can be used to define a lens that translates between a native HTML representation of browser bookmarks and a generic abstract bookmark format." links: doi: "http://doi.acm.org/10.1145/1232420.1232424" tags: - "programming languages" - "bidirectional transformation" - "translation" - "data-flow language" - "generic programming" - "transformation language" - "composition" - "functional programming" - "language design" - "data-flow programming" - "data-flow" - "C++" - "programming" - "design" - "systematic-approach" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/FosterGMPS07" cites: 0 citedby: 0 journal: "ACM Transactions on Programming Languages and Systems" volume: "29" number: "3" pages: "17" kind: "article" key: "FosterGMPS07" - title: "Updatable Security Views" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Steve Zdancewic" link: "https://researchr.org/alias/steve-zdancewic" year: "2009" doi: "http://doi.ieeecomputersociety.org/10.1109/CSF.2009.25" links: doi: "http://doi.ieeecomputersociety.org/10.1109/CSF.2009.25" tags: - "C++" - "security" researchr: "https://researchr.org/publication/FosterPZ09" cites: 0 citedby: 0 pages: "60-74" booktitle: "Proceedings of the 22nd IEEE Computer Security Foundations Symposium, CSF 2009, Port Jefferson, New York, USA, July 8-10, 2009" publisher: "IEEE Computer Society" isbn: "978-0-7695-3712-2" kind: "inproceedings" key: "FosterPZ09" - title: "A Logic Your Typechecker Can Count On: Unordered Tree Types in Practice" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Alan Schmitt" link: "https://researchr.org/alias/alan-schmitt" year: "2007" doi: "http://www.plan-x-2007.org/plan-x-2007.pdf" links: doi: "http://www.plan-x-2007.org/plan-x-2007.pdf" tags: - "C++" - "logic" researchr: "https://researchr.org/publication/FosterPS07" cites: 0 citedby: 0 pages: "80-90" booktitle: "PLAN-X 2007, Programming Language Technologies for XML, An ACM SIGPLAN Workshop colocated with POPL 2007, Nice, France, January 20, 2007" kind: "inproceedings" key: "FosterPS07" - title: "Exploiting schemas in data synchronization" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Michael B. Greenwald" link: "https://researchr.org/alias/michael-b.-greenwald" - name: "Christian Kirkegaard" link: "https://researchr.org/alias/christian-kirkegaard" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Alan Schmitt" link: "https://researchr.org/alias/alan-schmitt" year: "2007" doi: "http://dx.doi.org/10.1016/j.jcss.2006.10.024" links: doi: "http://dx.doi.org/10.1016/j.jcss.2006.10.024" tags: - "synchronization" - "XML" - "XML Schema" - "data-flow" - "C++" researchr: "https://researchr.org/publication/FosterGKPS07" cites: 0 citedby: 0 journal: "J. Comput. Syst. Sci." volume: "73" number: "4" pages: "669-689" kind: "article" key: "FosterGKPS07" - title: "Quotient lenses" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Alexandre Pilkiewicz" link: "https://researchr.org/alias/alexandre-pilkiewicz" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" year: "2008" doi: "http://doi.acm.org/10.1145/1411204.1411257" abstract: "There are now a number of bidirectional programming languages, where every program can be read both as a forward transformation mapping one data structure to another and as a reverse transformation mapping an edited output back to a correspondingly edited input. Besides parsimony—the two related transformations are described by just one expression—such languages are attractive because they promise strong behavioral laws about how the two transformations fit together—e.g., their composition is the identity function. It has repeatedly been observed, however, that such laws are actually a bit too strong: in practice, we do not want them “on the nose,” but only up to some equivalence, allowing inessential details, such as whitespace, to be modified after a round trip. Some bidirectional languages loosen their laws in this way, but only for specific, baked-in equivalences. In this work, we propose a general theory of quotient lenses— bidirectional transformations that are well behaved modulo equivalence relations controlled by the programmer. Semantically, quotient lenses are a natural refinement of lenses, which we have studied in previous work. At the level of syntax, we present a rich set of constructs for programming with canonizers and for quotienting lenses by canonizers. We track equivalences explicitly, with the type of every quotient lens specifying the equivalences it respects. We have implemented quotient lenses as a refinement of the bidirectional string processing language Boomerang. We present a number of useful primitive canonizers for strings, and give a simple extension of Boomerang’s regular-expression-based type system to statically typecheck quotient lenses. The resulting language is an expressive tool for transforming real-world, ad-hoc data formats. We demonstrate the power of our notation by developing an extended example based on the UniProt genome database format and illustrate the generality of our approach by showing how uses of quotienting in other bidirectional languages can be translated into our notation." links: doi: "http://doi.acm.org/10.1145/1411204.1411257" tags: - "control systems" - "programming languages" - "parsimony" - "rule-based" - "bidirectional transformation" - "translation" - "data-flow language" - "refinement" - "transformation language" - "composition" - "type system" - "data-flow programming" - "data-flow" - "C++" - "transformation system" - "lenses" - "programming" - "database" - "type theory" - "systematic-approach" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/FosterPP08" cites: 0 citedby: 0 pages: "383-396" booktitle: "Proceeding of the 13th ACM SIGPLAN international conference on Functional programming, ICFP 2008, Victoria, BC, Canada, September 20-28, 2008" editor: - name: "James Hook" link: "https://researchr.org/alias/james-hook" - name: "Peter Thiemann" link: "http://www.informatik.uni-freiburg.de/~thiemann/" publisher: "ACM" isbn: "978-1-59593-919-7" kind: "inproceedings" key: "FosterPP08" - title: "Exploiting Schemas in Data Synchronization" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Michael B. Greenwald" link: "https://researchr.org/alias/michael-b.-greenwald" - name: "Christian Kirkegaard" link: "https://researchr.org/alias/christian-kirkegaard" - name: "Benjamin C. Pierce" link: "http://www.cis.upenn.edu/~bcpierce/" - name: "Alan Schmitt" link: "https://researchr.org/alias/alan-schmitt" year: "2005" doi: "http://dx.doi.org/10.1007/11601524_3" links: doi: "http://dx.doi.org/10.1007/11601524_3" tags: - "synchronization" - "XML" - "XML Schema" - "data-flow" - "C++" researchr: "https://researchr.org/publication/FosterGKPS05" cites: 0 citedby: 0 pages: "42-57" booktitle: "Database Programming Languages, 10th International Symposium, DBPL 2005, Trondheim, Norway, August 28-29, 2005, Revised Selected Papers" editor: - name: "Gavin M. Bierman" link: "https://researchr.org/alias/gavin-m.-bierman" - name: "Christoph Koch" link: "https://researchr.org/alias/christoph-koch" volume: "3774" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-30951-9" kind: "inproceedings" key: "FosterGKPS05" - title: "Annotated XML: queries and provenance" author: - name: "J. Nathan Foster" link: "http://www.cs.princeton.edu/~jnfoster/" - name: "Todd J. Green" link: "https://researchr.org/alias/todd-j.-green" - name: "Val Tannen" link: "https://researchr.org/alias/val-tannen" year: "2008" doi: "http://doi.acm.org/10.1145/1376916.1376954" links: doi: "http://doi.acm.org/10.1145/1376916.1376954" tags: - "XML" - "XML Schema" researchr: "https://researchr.org/publication/FosterGT08" cites: 0 citedby: 0 pages: "271-280" booktitle: "Proceedings of the Twenty-Seventh ACM SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems, PODS 2008, June 9-11, 2008, Vancouver, BC, Canada" editor: - name: "Maurizio Lenzerini" link: "https://researchr.org/alias/maurizio-lenzerini" - name: "Domenico Lembo" link: "https://researchr.org/alias/domenico-lembo" publisher: "ACM" isbn: "978-1-60558-108-8" kind: "inproceedings" key: "FosterGT08"