ACM Home Page
Please provide us with feedback. Feedback
There and back again: arrows for invertible programming
Full text PdfPdf (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
ACM: Association for Computing Machinery
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 7,   Downloads (12 Months): 49,   Citation Count: 2
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
Save this Article to a Binder    Display Formats: BibTex  EndNote ACM Ref   
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1088348.1088357
What is a DOI?

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
 
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.


Collaborative Colleagues:
Artem Alimarine: colleagues
Sjaak Smetsers: colleagues
Arjen van Weelden: colleagues
Marko van Eekelen: colleagues
Rinus Plasmeijer: colleagues