Program inversion: more than fun!
Science of Computer Programming
A gentle introduction to Haskell
ACM SIGPLAN Notices - Haskell special issue
Science of Computer Programming - Special issue on mathematics of program construction
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Polytypic data conversion programs
Science of Computer Programming
Frappé: Functional Reactive Programming in Java
PADL '01 Proceedings of the Third International Symposium on Practical Aspects of Declarative Languages
Program Construction, International Summer Schoo
A Generic Programming Extension for Clean
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
Dependency-style generic haskell
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Revisiting an automatic program inverter for Lisp
ACM SIGPLAN Notices
Tangible functional programming
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Boomerang: resourceful lenses for string data
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Isomorphisms, hylomorphisms and hereditarily finite data types in Haskell
Proceedings of the 2009 ACM symposium on Applied Computing
Categorical semantics for arrows
Journal of Functional Programming
Foundations for Bidirectional Programming
ICMT '09 Proceedings of the 2nd International Conference on Theory and Practice of Model Transformations
A Groupoid of Isomorphic Data Transformations
Calculemus '09/MKM '09 Proceedings of the 16th Symposium, 8th International Conference. Held as Part of CICM '09 on Intelligent Computer Mathematics
Canonical Forms in Interactive Exercise Assistants
Calculemus '09/MKM '09 Proceedings of the 16th Symposium, 8th International Conference. Held as Part of CICM '09 on Intelligent Computer Mathematics
Arrows, like Monads, are Monoids
Electronic Notes in Theoretical Computer Science (ENTCS)
Adventures in bidirectional programming
FSTTCS'07 Proceedings of the 27th international conference on Foundations of software technology and theoretical computer science
Invertible syntax descriptions: unifying parsing and pretty printing
Proceedings of the third ACM Haskell symposium on Haskell
Hereditarily finite representations of natural numbers and self-delimiting codes
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Gradual refinement: blending pattern matching with data abstraction
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Less is more: unparser-completeness of metalanguages for template engines
Proceedings of the 10th ACM international conference on Generative programming and component engineering
Linguistic foundations for bidirectional transformations: invited tutorial
PODS '12 Proceedings of the 31st symposium on Principles of Database Systems
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Correct-by-construction pretty-printing
Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
Science of Computer Programming
Hi-index | 0.00 |
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.