multirec: Generic programming for families of recursive datatypes
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 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, families of mutually recursive datatypes have been excluded.
With the multirec library, we provide a mechanism to talk about fixed points of families 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 families 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. ICFP 2009.
Properties
Versions | 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.8, 0.7.9 |
---|---|
Change log | None available |
Dependencies | base (>=3.0 && <5), template-haskell (>=2.4 && <2.13) [details] |
License | BSD-3-Clause |
Author | Alexey Rodriguez, Stefan Holdermans, Andres Löh, Johan Jeuring |
Maintainer | generics@haskell.org |
Category | Generics |
Home page | http://www.cs.uu.nl/wiki/GenericProgramming/Multirec |
Bug tracker | https://github.com/kosmikus/multirec/issues |
Source repo | head: git clone https://github.com/kosmikus/multirec |
Uploaded | by AndresLoeh at 2017-11-28T08:14:51Z |
Modules
[Index]
- Generics
- Generics.MultiRec
- Generics.MultiRec.Base
- Generics.MultiRec.Compos
- Generics.MultiRec.ConNames
- Generics.MultiRec.Constructor
- Generics.MultiRec.Eq
- Generics.MultiRec.Fold
- Generics.MultiRec.FoldAlg
- Generics.MultiRec.FoldAlgK
- Generics.MultiRec.FoldK
- Generics.MultiRec.HFix
- Generics.MultiRec.HFunctor
- Generics.MultiRec.Read
- Generics.MultiRec.Show
- Generics.MultiRec.TEq
- Generics.MultiRec.TH
- Generics.MultiRec
Downloads
- multirec-0.7.8.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees