| There and back again: arrows for invertible programming |
| Full text |
Pdf
(175 KB)
|
| Source
|
Haskell
archive
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
table of contents
Tallinn, Estonia
Pages: 86 - 97
Year of Publication: 2005
ISBN:1-59593-071-X
|
|
Authors
|
|
Artem Alimarine
|
Radboud University Nijmegen, Nijmegen, The Netherlands
|
|
Sjaak Smetsers
|
Radboud University Nijmegen, Nijmegen, The Netherlands
|
|
Arjen van Weelden
|
Radboud University Nijmegen, Nijmegen, The Netherlands
|
|
Marko van Eekelen
|
Radboud University Nijmegen, Nijmegen, The Netherlands
|
|
Rinus Plasmeijer
|
Radboud University Nijmegen, Nijmegen, The Netherlands
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 7, Downloads (12 Months): 49, Citation Count: 2
|
|
|
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 bi-arrow 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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
| |
3
|
A. Courtney and C. Elliott. Genuinely Functional User Interfaces. In Proceedings of the 2001 Haskell Workshop, September 2001.
|
| |
4
|
|
 |
5
|
J. Nathan Foster , Michael B. Greenwald , Jonathan T. Moore , Benjamin C. Pierce , Alan Schmitt, Combinators for bi-directional tree transformations: a linguistic approach to the view update problem, Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.233-246, January 12-14, 2005, Long Beach, California, USA
|
| |
6
|
R. Glück and M. Kawabe. Derivation of deterministic inverse programs based on lr parsing. 2998:291--306, 2004.
|
 |
7
|
|
| |
8
|
R. Hinze and S. Peyton Jones. Derivable type classes. In G. Hutton, editor, Proceedings of the 2000 ACM SIGPLAN Haskell Workshop, volume 41.1 of Electronic Notes in Theoretical Computer Science. Elsevier Science, Aug. 2001. The preliminary proceedings appeared as a University of Nottingham technical report.
|
| |
9
|
P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, Robots, and Functional Reactive Programming. In J. Jeuring and S. Peyton Jones, editors, Advanced Functional Programming, 4th International School, volume 2638 of LNCS, Oxford, 2003. Springer.
|
| |
10
|
P. Hudak, J. Peterson, and J. Fasel. A gentle introduction to Haskell 98. http://www.haskell.org/tutorial/, 1999.
|
| |
11
|
|
| |
12
|
|
| |
13
|
|
 |
14
|
|
 |
15
|
|
| |
16
|
R. Paterson. Arrows and Computation. In J. Gibbons and O. de Moor, editors, The Fun of Programming, A symposium in honour of Professor Richard Bird's 60th birthday, pages 201--222, Oxford, 2003. Palgrave.
|
| |
17
|
S. Peyton Jones and Hughes J. et al. Report on the programming language Haskell 98. University of Yale, 1999. http://www.haskell.org/definition/.
|
| |
18
|
R. Plasmeijer and M. van Eekelen. Concurrent CLEAN Language Report (version 2.0), December 2001. http://www.cs.ru.nl/~clean/.
|
| |
19
|
B. Ross. Running programs backwards: the logical inversion of imperative computation. Formal Aspects of Computing Journal, 9:331--348, 1997.
|
| |
20
|
Z. H. S-C. Mu and M. Takeichi. An algebraic approach to bidirectional updating. In The Second Asian Symposium on Programming Language and Systems, volume 3302 of LNCS, pages 2--18. Springer, 2004.
|
| |
21
|
P. Wadler. Monads for functional programming. In M. Broy, editor, Program Design Calculi: Proceedings of the 1992 Marktoberdorf International Summer School. Springer-Verlag, 1993.
|
|