README.org

* Recursion Schemes

  An Elixir implementation of generic recursion schemes; functions for building and consuming recursively defined data structures.

  See [[http://axiom-wiki.newsynthesis.org/public/refs/Meijer-db-utwente-40501F46.pdf][Functional Programming with Bananas Lenses Envelopes and Barbed Wire]] for the seminal paper describing recursion schemes.

  The current implementation includes [[https://en.wikipedia.org/wiki/Catamorphism][catamorphism]], [[https://en.wikipedia.org/wiki/Anamorphism][anamorphism]], and [[https://en.wikipedia.org/wiki/Hylomorphism_(computer_science)][hylomorphism]]. These functions are for (respectively) consuming, creating, and creating then consuming data structures.

  Up-to-date docs can be found via [[https://hexdocs.pm/recursion_schemes][hexdocs.pm/recursion_schemes]].

  /Note:/ This library is in development and the API is subject to change.

** Installation
Add `recursion_schemes` to your list of dependencies in `mix.exs`:

#+BEGIN_SRC elixir
def deps do
  [{:recursion_schemes, "~> 0.1.0"}]
end
#+END_SRC