Giter Site home page Giter Site logo

awesome-recursion-schemes's Introduction

Awesome Recursion Schemes Awesome

A curation of useful resources for learning about and using recursion schemes.

Recursion schemes are simple, composable combinators, that automate the process of traversing and recursing through nested data structures.

Contents

Introductions

  • Awesome Recursion Schemes - A 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.

Articles

Hylomorphisms in the Wild

Articles by Bartosz Milewski about solving small, practical problems by applying a hylomorphism.

Papers

Presentations

Cheat Sheets

Podcasts

Implementations

  • recursion-schemes for Haskell - The canonical implementation by Edward Kmett.
  • Matryoshka for Scala using Scalaz - Generalized folds, unfolds, and traversals for fixed point data structures.
  • andyscott/droste for Scala using Cats - Generalized folds, unfolds, and traversals for fixed point data structures.
  • recursion_schemes for Idris, based off Edward Kmett's Haskell library.
  • purescript-matryoshka for PureScript - Work-in-process port of matryoshka.
  • recursion for ATS - Demonstration of recursion schemes in ATS.
  • dada for Dhall - a library for recursion schemes in Dhall.
  • static-land-recursion-schemes for JavaScript/Flow - Schemes for data structures written in the style of flow-static-land.
  • Katalyst for Kotlin - a re-envisioning based off Matryoshka using lightweight higher kinded polymorphism.

License

This content is licensed under CC0.

awesome-recursion-schemes's People

Contributors

5ht avatar aij avatar ckoparkar avatar csabahruska avatar josephjunker avatar kalexmills avatar leeroyding avatar lemastero avatar masser avatar pakoito avatar passy avatar profpatsch avatar sindresorhus avatar spf3000 avatar steshaw avatar vmchale avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-recursion-schemes's Issues

Cheat sheet is 404

The Hitchhiker's Guide to Morphisms - Overview of different morphisms including a printable PDF.

GitHub gives error 404 on this page now.

Add links to Nanopass Framework

This is a great collection of resources!

I think one link to add would be to the "nanopass framework" for writing compilers in Scheme/Racket. It encapsulates various recursion schemes in a little macro-based DSL for compiler passes:

Many students at Indiana University used it to write their compilers for class.
It's also what Chez Scheme is implemented in:

Typo

Typo: Pratical

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.