Track Awesome Recursion Schemes Updates Weekly
Resources for learning and using recursion schemes.
🏠 Home · 🔍 Search · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 passy/awesome-recursion-schemes · ⭐ 1.1K · 🏷️ Theory
Nov 30 - Dec 06, 2020
Articles
- Promorphisms, Pre and Post - Practical examples of pre- and postpromorphisms by Jared Tobin.
Jun 22 - Jun 28, 2020
Articles
- What's in a Fold: The Basic Catamorphism in recursion-schemes - Introduces catamorphism as a generalization of fold.
Sep 23 - Sep 29, 2019
Articles
- Recursion Schemes in Scala - Introduces the fixpoint combinator, anamorphism, catamorphism, hylomorphism, paramorphism, apomorphism, histomorphism, dynamorphism and futumorphism.
May 13 - May 19, 2019
Podcasts / Hylomorphisms in the Wild
- Scala Love - Podcast about Scala that brings up recursion schemes in the second episode.
- The Haskell Cast - Recursion schemes come up in Episode 13 with John Wiegley.
Implementations / Hylomorphisms in the Wild
- andyscott/droste (⭐351) for Scala using Cats - Generalized folds, unfolds, and traversals for fixed point data structures.
Feb 04 - Feb 10, 2019
Introductions
- Awesome Recursion Schemes (⭐1.1k) - A curation of useful resources for learning about and using recursion schemes.
Jan 14 - Jan 20, 2019
Articles / Hylomorphisms in the Wild
- Stalking a Hylomorphism in the Wild - Advent of Code 2017, Domino challenge
- Open Seasons on Hylomorphisms - Advent of Code 2018, String comparison challenge
Dec 24 - Dec 30, 2018
Cheat Sheets / Hylomorphisms in the Wild
- The Hitchhiker's Guide to Morphisms - Overview of different morphisms including a printable PDF.
Aug 27 - Sep 02, 2018
Presentations / Hylomorphisms in the Wild
- Peeling the Banana: Recursion Schemes from First Principles - Zainab Ali's Introductory talk presented at LambdaWorld.
Jul 16 - Jul 22, 2018
Implementations / Hylomorphisms in the Wild
- recursion (⭐8) for ATS - Demonstration of recursion schemes in ATS.
May 07 - May 13, 2018
Implementations / Hylomorphisms in the Wild
- dada (⭐58) for Dhall - a library for recursion schemes in Dhall.
Apr 16 - Apr 22, 2018
Articles
Implementations / Hylomorphisms in the Wild
- Katalyst (⭐22) for Kotlin - a re-envisioning based off Matryoshka using lightweight higher kinded polymorphism.
Mar 26 - Apr 01, 2018
Articles
- Recursion Schemes, Part IV: Time is of the Essence - Practical article about histomorphism and the futumorphism.
Sep 18 - Sep 24, 2017
Implementations / Hylomorphisms in the Wild
- recursion_schemes (⭐60) for Idris, based off Edward Kmett's Haskell library.
Sep 04 - Sep 10, 2017
Introductions
- Recursion Schemes in JavaScript and Flow - Series introducing recursion schemes and related concepts in JavaScript, aimed at developers with a minimal functional programming background.
Implementations / Hylomorphisms in the Wild
- static-land-recursion-schemes (⭐21) for JavaScript/Flow - Schemes for data structures written in the style of flow-static-land (⭐415).
Aug 21 - Aug 27, 2017
Presentations / Hylomorphisms in the Wild
- recursion-scheme-talk (⭐204) - Collection of slide decks about recursion schemes.
Jun 05 - Jun 11, 2017
Papers / Hylomorphisms in the Wild
- Scrap your boilerplate: a practical design pattern for generic programming, 2003, SPJ et al. - Design pattern for writing programs that traverse data structures built from rich mutually-recursive data types.
Implementations / Hylomorphisms in the Wild
- purescript-matryoshka (⭐57) for PureScript - Work-in-process port of matryoshka.
Feb 06 - Feb 12, 2017
Presentations / Hylomorphisms in the Wild
- Programming with algebras - Bartosz Milewski's article in talk form, presented at LambdaCon.
Jan 16 - Jan 22, 2017
Presentations / Hylomorphisms in the Wild
- Bracer: Transforming Real-World Languages with Coproducts and Recursion Schemes - High-level talk about structuring programs with coproducts and recursion schemes by Patrick Thomson.
- Recursion: Where Functional Programming Hits Bottom - Introduction to recursive fix point data structures and recursion schemes in Haskell and Scala by Greg Pfeil.
Jan 09 - Jan 15, 2017
Articles
- Rotating Squares - Using a hylomorphism to rotate a quadtree by Jared Tobin.
- Time Traveling Recursion Schemes - Exploring histo and futu by example by Jared Tobin.
- Cheat Sheet (⭐204) - Map of various recursion schemes and their duals.
- Correcting the Visitor pattern - Showing that the Visitor pattern implements an f-algebra for use with a catamorphism (in Java).
Podcasts / Hylomorphisms in the Wild
- Magic Read Along - Casual discussions about category theory that often bring up recursion schemes, including episode 33 which talks about Histomorphisms and Futumorphisms.
Implementations / Hylomorphisms in the Wild
- recursion-schemes (⭐310) for Haskell - The canonical implementation by Edward Kmett.
- Matryoshka (⭐795) for Scala using Scalaz - Generalized folds, unfolds, and traversals for fixed point data structures.
Dec 26 - Jan 01, 2016
Introductions
- Practical Recursion Schemes - Introduction to pattern functors, fix points, anamorphisms, catamorphisms, paramorphisms and hylomorphisms, requiring very little prior knowledge.
- An Introduction to Recursion Schemes - Three-part series in which you discover recursion schemes from scratch and implement a small subset of Edward Kmett's library.
- Understanding Algebras - Bartosz Milewski explains F-algebras and shows how to use them in the context of catamorphisms.
Articles
- Recursion Schemes: A Field Guide (Redux) - List of various recursion schemes with code samples.
- Catamorphisms - Definition on the Haskell Wiki.
- Catamorphisms - Short definition with code on School of Haskell by Edward Kmett.
Papers / Hylomorphisms in the Wild
- Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire, 1991, Meijer et al. - The original paper most of this is based on.
- A Duality of Sorts, 2013, Hinze et al. - Shows that many basic sorting algorithms exist as a pair, and that these pairs arise naturally out of the duality between folds and unfolds.
- Sorting with Bialgebras and Distributive Laws, 2012, Hinze et al. - Shows how paramorphisms and apomorphisms can be used for more efficient implementations of sorting algorithms.
Presentations / Hylomorphisms in the Wild
- Slidedecks by Tim Philip Williams - "Recursion Schemes by Example" and "Exotic Tools for Exotic Trades" provide concise definitions as well as practical examples of many recursion schemes.
- Unifying Structured Recursion Schemes - 12 min presentation by Ralf Hinze, Nicolas Wu, and Jeremy Gibbons.
- Recursion Schemes - Presented by Tim Williams at the London Haskell meetup.
- F-algebras or: How I Learned to Stop Worrying and Love the Type System - Presented by Anthony Burzillo at the NYC Haskell User's Group.
- A Gentle Introduction to Recursion Schemes - Presented by Jean Remi Desjardins at Lambdaconf 2016.