Recursive data structures are everywhere and need to be processed. Operations on these structures are recursive and can not be reused on other data structures.

Recursion schemes show a path to generalizing the way of working with these data structures. They also enable us to separate our business logic from recursion.

Slides

Sources

  1. Coplien, J. (1998). To Iterate is Human, to Recurse, Divine. C++ Report 10(7), July/August 1998, pp. 43 - 51.
  2. Meijer, E., Fokkinga, M., & Paterson, R. (1991). Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire.
  3. Hutton, G. (1999). A Tutorial on the Universality and Expressiveness of Fold.
  4. Ali, Z. (2017). Intro to Property-Based Testing.
  5. Thomson, T. (2014 - 2018). Recursion Schemes Part I, Part II, Part III, Part IV, Part 4½, Parrt V.
  6. Droste
  7. Awesome Recursion Schemes

CC0
To the extent possible under law, Daniel Heinrich has waived all copyright and related or neighboring rights to Conquering recursion one step at a time. This work is published from: Germany.