recursion-schemes: Representing common recursion patterns as higher-order functions
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Many recursive functions share the same structure, e.g. pattern-match on the input and, depending on the data constructor, either recur on a smaller input or terminate the recursion with the base case. Another one: start with a seed value, use it to produce the first element of an infinite list, and recur on a modified seed in order to produce the rest of the list. Such a structure is called a recursion scheme. Using higher-order functions to implement those recursion schemes makes your code clearer, faster, and safer. See README for details.
[Skip to Readme]
Properties
Versions | 0.1, 0.1.1, 0.2, 0.2.1, 0.2.2, 0.3.0, 0.3.0.1, 0.4.0, 0.4.0.1, 0.4.0.2, 0.4.0.3, 0.4.1, 0.4.2, 0.4.3, 0.5.0, 0.5.0.1, 1.8.0, 1.8.0.1, 1.8.0.2, 2.0, 2.0.1, 2.0.1.1, 2.0.1.2, 2.0.2, 2.1, 3.0, 3.0.0.1, 3.0.0.2, 4.0, 4.1, 4.1.1, 4.1.2, 5, 5.0.1, 5.0.2, 5.0.3, 5.1, 5.1.1, 5.1.1.1, 5.1.2, 5.1.3, 5.2, 5.2, 5.2.1, 5.2.2, 5.2.2.1, 5.2.2.2, 5.2.2.3, 5.2.2.4, 5.2.2.5, 5.2.3 |
---|---|
Change log | CHANGELOG.markdown |
Dependencies | base (>=4.5 && <5), base-orphans (>=0.5.4 && <0.9), bifunctors (>=4 && <6), comonad (>=4 && <6), containers (>=0.4.2.1 && <0.7), data-fix (>=0.3.0 && <0.4), free (>=4 && <6), ghc-prim, nats, semigroups (>=0.10 && <1), template-haskell (>=2.5.0.0 && <2.17), th-abstraction (>=0.3 && <0.4), transformers (>=0.3.0.0 && <1), transformers-compat (>=0.3 && <1) [details] |
License | BSD-2-Clause |
Copyright | Copyright (C) 2008-2015 Edward A. Kmett |
Author | Edward A. Kmett |
Maintainer | "Samuel Gélineau" <gelisam@gmail.com>, "Oleg Grenrus" <oleg.grenrus@iki.fi>, "Ryan Scott" <ryan.gl.scott@gmail.com> |
Category | Control, Recursion |
Home page | http://github.com/ekmett/recursion-schemes/ |
Bug tracker | http://github.com/ekmett/recursion-schemes/issues |
Source repo | head: git clone git://github.com/ekmett/recursion-schemes.git |
Uploaded | by gelisam at 2020-07-24T02:20:11Z |
Modules
[Index] [Quick Jump]
Flags
Manual Flags
Name | Description | Default |
---|---|---|
template-haskell | About Template Haskell derivations | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- recursion-schemes-5.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees