metamorphic: metamorphisms: ana . cata or understanding folds and unfolds

[ algebra, graphs, library, recursion ] [ Propose Tags ]

Metamorphisms are an approach to structured recursion.

This package is currently a reorganization and slight adaptation of the original code which was written more than a decade ago (in 1999); it is, however quite a direct and clever way to investigate the concepts involved.

The original code and paper can be found here:

This code uses unusual layout (in particular, I use very wide columns and lots of spacing) in hopes that it makes the symmetry of the functions manifest. Any mistakes in the code are almost surely mine, and not the original author's.

Future updates should include:

  • documentation

  • an abstract syntax graph version of the included functions

  • diagrams of involved structures

  • examples demonstrated by doctest

  • switch to hierarchical naming

  • switch to available versions of components (SimpleMap, Heap)

  • a more general license


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS]
Dependencies base (<5) [details]
License LicenseRef-OtherLicense
Author Martin Erwig <>
Maintainer Drew Day <>
Category Recursion, Algebra, Graphs
Home page
Source repo head: git clone
Uploaded by DrewDay at 2012-07-10T04:25:45Z
Distributions NixOS:
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1256 total (8 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]