MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

There and Back Again: Arrows for Invertible Programming (2005) [2 citations — 0 self]

by Artem Alimarine ,  Sjaak Smetsers ,  Arjen van Weelden ,  Marko van Eekelen ,  Rinus Plasmeijer
Add To MetaCart

Abstract:

Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (bi- arrows). The bi-arrow class is an extension of Haskell's arrow class with an extra combinator that changes the direction of computation. The advantage of the use of bi-arrows for invertible programming is the preservation of invertibility properties using the biarrow combinators. Programming with bi-arrows in a polytypic or generic way exploits this the most. Besides bidirectional polytypic examples, including invertible serialization, we give the definition of a monadic bi-arrow transformer, which we use to construct a bidirectional parser/pretty printer.

Citations

1122 Introduction to Functional Programming – Bird, Wadler - 1988
104 Derivable Type Classes – Hinze, Jones - 2001
87 Generalising monads to arrows – Hughes - 2000
55 Exploring Generic Haskell – Löh - 2004
52 Combinators for bi-directional tree transformations: A linguistic approach to the view update problem – Foster, Greenwald, et al. - 2007
45 A Generic Programming Extension for Clean – Alimarine, Plasmeijer - 2002
29 Arrows, robots, and functional reactive programming – Hudak, Courtney, et al. - 2003
29 et al. Report of the programming language Haskell98. a non-strict, purely functional language – Jones, Hughes - 1999
26 A new notation for arrows – Paterson - 2001
23 Genuinely functional user interfaces – Courtney, Elliott - 2001
23 Eekelen. Concurrent CLEAN Language Report (version 2.0 – Plasmeijer, van - 2001
20 Polytypic data conversion programs – Jansson, Jeuring
18 Polytypic compact printing and parsing – Jansson, Jeuring - 1999
17 Program inversion: More than fun – Chen, Udding - 1990
13 An algebraic approach to bi-directional updating – Mu, Hu, et al. - 2004
11 Program inversion – DIJKSTRA - 1979
8 Running Programs Backwards: The Logical Inversion of Imperative Computation – Ross - 1997
7 Arrows and computation – Paterson - 2003
6 Derivation of deterministic inverse programs based on LR parsing – Glück, Kawabe - 2004
4 A gentle introduction to Haskell 98. http://www.haskell.org/tutorial – Hudak, Peterson, et al. - 1999
1 Revisiting an automatic program inverter for lisp – Glück, Kawabe - 2005