multirec-0.2: 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. Changelog (changes w.r.t. multirec-0.1) --------------------------------------- * Constructor information and generic show (Generics.MultiRec.Show). * Variants of fold (Generics.MultiRec.FoldAlg) that make the definition of algebras significantly more convenient. * Template Haskell code to generate the boilerplate required to instantiate this library to a system of datatypes. Requirements ------------ * GHC 6.8.3 or later * Cabal 1.2.1 or later Download -------- With cabal-install: cabal install multirec Get the package: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/multirec Get the source: svn checkout https://svn.cs.uu.nl:12443/repos/dgp-haskell/multirec/trunk Bugs & Support -------------- Report issues, request features, or just discuss the library with the authors, maintainers, and other interested persons at: http://www.haskell.org/mailman/listinfo/generics