Let's solve some real-world problems!
Going bananas with recursion schemes for fixed point data types
In 1991 Erik Meijer, Maarten Fokkinga, and Ross Paterson published ""Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire."" This paper is a classic one, widely recognizable in the FP community. Constructs described - known as recursion schemas - have real world applications. Strictly speaking, explicit recursion is the ‘goto’ of pure functional programming. Recursion schemas provide same level of sanity as loops did for structural programming back in the day.
Over the years a lot of the progress have been made. Papers like ""Recursion schemes from comonads"" by Tarmo Uustalu, Varmo Vene & Alberto Pardo or ""Unifying Structured Recursion Schemes"" by Ralf Hinze, Nicolas Wu & Jeremy Gibbons - pushed the concept forward.
This talk is about generalization of a very specific recursion schema (called catamorphism) over fixed point data type. After providing introduction the concept of catamorphism, we will jump straight to fix point data types trying to solve some real-world problems. Code examples are in Scala. Code examples use Matryoshka - which is an open sourced project design to generalize folds, unfolds, and traversals for fixed point data structures in Scala.