awesome-recursion-schemes

Recursion scheme resource hub

A curated collection of resources for learning and using recursion schemes in software development.

Resources for learning and using recursion schemes.

GitHub

1k stars
45 watching
56 forks
last commit: over 2 years ago
Linked from 4 awesome lists

awesomecatamorphismsrecursion-schemes

Awesome Recursion Schemes / Introductions

Awesome Recursion Schemes1,222over 2 years agoA curation of useful resources for learning about and using recursion schemes
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
Recursion Schemes in JavaScript and Flow- Series introducing recursion schemes and related concepts in JavaScript, aimed at developers with a minimal functional programming background

Awesome Recursion Schemes / Articles

Recursion Schemes: A Field Guide (Redux)- List of various recursion schemes with code samples
CatamorphismsDefinition on the Haskell Wiki
Catamorphisms- Short definition with code on School of Haskell by Edward Kmett
Rotating SquaresUsing a hylomorphism to rotate a quadtree by Jared Tobin
Recursion Schemes, Part V: Hello, Hylomorphisms
Promorphisms, Pre and PostPractical examples of pre- and postpromorphisms by Jared Tobin
Time Traveling Recursion SchemesExploring histo and futu by example by Jared Tobin
Recursion Schemes, Part IV: Time is of the EssencePractical article about histomorphism and the futumorphism
Cheat Sheet217over 2 years agoMap of various recursion schemes and their duals
Correcting the Visitor patternShowing that the Visitor pattern implements an f-algebra for use with a catamorphism (in Java)
Recursion Schemes in ScalaIntroduces the fixpoint combinator, anamorphism, catamorphism, hylomorphism, paramorphism, apomorphism, histomorphism, dynamorphism and futumorphism
What's in a Fold: The Basic Catamorphism in recursion-schemesIntroduces catamorphism as a generalization of fold

Awesome Recursion Schemes / Articles / Hylomorphisms in the Wild

Stalking a Hylomorphism in the WildAdvent of Code 2017, Domino challenge
Open Seasons on HylomorphismsAdvent of Code 2018, String comparison challenge

Awesome Recursion Schemes / Papers

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

Awesome Recursion Schemes / Presentations

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
recursion-scheme-talk217over 2 years agoCollection of slide decks about recursion schemes
Bracer: Transforming Real-World Languages with Coproducts and Recursion SchemesHigh-level talk about structuring programs with coproducts and recursion schemes by Patrick Thomson
Recursion: Where Functional Programming Hits BottomIntroduction to recursive fix point data structures and recursion schemes in Haskell and Scala by Greg Pfeil
Programming with algebrasBartosz Milewski's article in talk form, presented at LambdaCon
Peeling the Banana: Recursion Schemes from First PrinciplesZainab Ali's Introductory talk presented at LambdaWorld

Awesome Recursion Schemes / Cheat Sheets

The Hitchhiker's Guide to MorphismsOverview of different morphisms including a printable PDF

Awesome Recursion Schemes / Podcasts

Magic Read AlongCasual discussions about category theory that often bring up recursion schemes, including which talks about Histomorphisms and Futumorphisms
Scala LovePodcast about Scala that brings up recursion schemes in
The Haskell CastRecursion schemes come up in

Awesome Recursion Schemes / Implementations

recursion-schemes339almost 2 years agofor Haskell - The canonical implementation by Edward Kmett
Matryoshka811over 6 years agofor Scala using Scalaz - Generalized folds, unfolds, and traversals for fixed point data structures
andyscott/droste388almost 2 years agofor Scala using Cats - Generalized folds, unfolds, and traversals for fixed point data structures
recursion_schemes64about 8 years agofor Idris, based off Edward Kmett's Haskell library
purescript-matryoshka59over 4 years agofor PureScript - Work-in-process port of matryoshka
recursion9over 4 years agofor ATS - Demonstration of recursion schemes in ATS
dada65almost 2 years agofor Dhall - a library for recursion schemes in Dhall
static-land-recursion-schemes22about 9 years agofor JavaScript/Flow - Schemes for data structures written in the style of
Katalyst22over 7 years agofor Kotlin - a re-envisioning based off Matryoshka using lightweight higher kinded polymorphism

Backlinks from these awesome lists:

More related projects: