Paweł Szulc is a seasoned developer with a rich background in functional programming languages, including Scala and Haskell. Known in the developer community as "EncodePanda," Paweł is passionate about exploring complex software design patterns and bridging the gap between practicality and expressiveness in code.
Recently, Paweł has expanded his expertise to include Rust, intrigued by its powerful system-level programming capabilities and the language’s emphasis on memory safety without sacrificing performance. His transition to Rust aligns well with his interest in leveraging expressive type systems to write robust, efficient software.
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.