multirec: Generic programming with systems of recursive datatypes
Many generic programs require information about the recursive positions of a datatype. Examples include the generic fold, generic rewriting or the Zipper data structure. Several generic programming systems allow to write such functions by viewing datatypes as fixed points of a pattern functor. Traditionally, this view has been limited to so-called regular datatypes such as lists and binary trees. In particular, systems of mutually recursive datatypes have been excluded.
With the multirec library, we provide a mechanism to talk about fixed points of systems of datatypes that may be mutually recursive. On top of this representations, generic functions such as the fold or the zipper can then be defined.
We expect that the library will be especially interesting for compiler writers, because ASTs are typically systems of mutually recursive datatypes, and with multirec it becomes easy to write generic functions on ASTs.
The library is based on ideas described in the paper:
Alexey Rodriguez, Stefan Holdermans, Andres Löh, Johan Jeuring. Generic programming with fixed points for mutually recursive datatypes. Technical Report, Universiteit Utrecht (http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-019.pdf).
|Versions [faq]||0.1, 0.2, 0.3, 0.4, 0.4.1, 0.5, 0.5.1, 0.6, 0.7, 0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.9|
|Dependencies||base (>=3.0 && <4) [details]|
|Author||Alexey Rodriguez, Stefan Holdermans, Andres Löh, Johan Jeuring|
|Revised||Revision 1 made by HerbertValerioRiedel at Sun Nov 27 12:40:47 UTC 2016|
|Uploaded||by AndresLoeh at Fri Oct 31 14:34:28 UTC 2008|
|Downloads||7351 total (294 in the last 30 days)|
|Rating||2.0 (votes: 1) [estimated by rule of succession]|
Docs uploaded by user
Build status unknown [no reports yet]
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees