# 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.