Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Notions of computation and monads
Information and Computation
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Structuring depth-first search algorithms in Haskell
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Handbook of logic in computer science (vol. 3)
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Bananas in space: extending fold and unfold to exponential types
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Algebra of programming
Rolling your own mutable ADT—a connection between linear types and monads
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A calculational fusion system HYLO
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Fold and unfold for program semantics
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Fusion of recursive programs with computational effects
Theoretical Computer Science
Introduction to Functional Programming
Introduction to Functional Programming
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Graph Algorithms with a Functional Flavous
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Merging Monads and Folds for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Lifting Theorems for Kleisli Categories
Proceedings of the 9th International Conference on Mathematical Foundations of Programming Semantics
Calculating functional programs
Algebraic and coalgebraic methods in the mathematics of program construction
The essence of the iterator pattern
Journal of Functional Programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Exploiting algebra/coalgebra duality for program fusion extensions
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
A bottom-up approach to understand functional programs
Proceedings of The Fourth International C* Conference on Computer Science and Software Engineering
The Essence of the Iterator Pattern
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Fibrational induction meets effects
FOSSACS'12 Proceedings of the 15th international conference on Foundations of Software Science and Computational Structures
Hi-index | 0.00 |
Recursion schemes over datatypes constitute a powerful tool to structure functional programs. Standard schemes, like map and fold, have traditionally been studied in the context of purely-functional programs. In this paper we propose the generalization of well-known recursion schemes with the aim to obtain structuring mechanisms for programs with effects, assuming that effects are modelled by monads. We analyze the definition as well as the algebraic laws associated with the new recursion schemes. The way monads encapsulate effects plays an important role in the definition of the monadic recursion schemes, as it permits to focus on the structure of the recursive programs with effects disregarding the specific details of the effects involved. We illustrate the use of the recursion schemes and their laws with some traversal algorithms on graphs.