Principles and Practice of Bidirectional Programming in BiGUL

Putback-based bidirectional programming allows the programmer to write only one backward transformation, from which the unique corresponding forward transformation is derived for free. A key distinguishing feature of putback-based bidirectional programming is full control over the bidirectional behavior, which is important for specifying intended bidirectional transformations without any ambiguity. In this chapter, we will introduce BiGUL, a simple yet powerful putback-based bidirectional programming language, explaining the underlying principles and showing how various kinds of bidirectional application can be developed in BiGUL.

[1]  Zhenjiang Hu,et al.  The essence of bidirectional programming , 2015, Science China Information Sciences.

[2]  Benjamin C. Pierce,et al.  Bidirectional programming languages , 2009 .

[3]  Benjamin C. Pierce,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[4]  Krzysztof Czarnecki,et al.  From State- to Delta-Based Bidirectional Model Transformations: the Asymmetric Case , 2011, J. Object Technol..

[5]  Kazutaka Matsuda,et al.  Bidirectionalizing graph transformations , 2010, ICFP '10.

[6]  Zhenjiang Hu,et al.  BiGUL: a formally verified core language for putback-based bidirectional programming , 2016, PEPM.

[7]  João Saraiva,et al.  Parsing and reflective printing, bidirectionally , 2016, SLE.

[8]  Zhenjiang Hu,et al.  Validity Checking of Putback Transformations in Bidirectional Programming , 2014, FM.

[9]  Zhenjiang Hu,et al.  A Clear Picture of Lens Laws - Functional Pearl , 2015, MPC.

[10]  Benjamin C. Pierce,et al.  Boomerang: resourceful lenses for string data , 2008, POPL '08.

[11]  Zhenjiang Hu,et al.  BiFluX: A Bidirectional Functional Update Language for XML , 2014, PPDP '14.

[12]  Zhenjiang Hu,et al.  Monadic combinators for "Putback" style bidirectional programming , 2014, PEPM '14.

[13]  Martin Hofmann,et al.  Symmetric lenses , 2011, POPL '11.

[14]  Kazutaka Matsuda,et al.  Bidirectionalization transformation based on automatic derivation of view complement functions , 2007, ICFP '07.

[15]  Benjamin C. Pierce,et al.  Relational lenses: a language for updatable views , 2006, PODS '06.

[16]  Dongxi Liu,et al.  Towards automatic model synchronization from model transformations , 2007, ASE.

[17]  Janis Voigtländer Bidirectionalization for free! (Pearl) , 2009, POPL '09.

[18]  Benjamin C. Pierce,et al.  Matching lenses: alignment and view update , 2010, ICFP '10.

[19]  Li Liu,et al.  Brul: A Putback-Based Bidirectional Transformation Library for Updatable Views , 2016, Bx@ETAPS.