You are here: UUCS>GenericProgramming Web>Libraries>Regular (03 Mar 2010, JosePedroMagalhaes)EditAttach


Many generic programs require information about the recursive positions of a datatype. Examples include the generic fold, generic rewriting, and the Zipper data structure. This approach provides a fixed point view on data which allows these definitions for regular datatypes. It can be seen as a simplification of the Multirec library, which provides similar functionality but for families of (possibly mutually recursive) datatypes.

This library is the underlying generic representation mechanism in the paper: Thomas van Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren. A Lightweight Approach to Datatype-Generic Rewriting. In Ralf Hinze and Don Syme, editors, Proceedings of the ACM SIGPLAN Workshop on Generic Programming, WGP 2008, Victoria, BC, Canada, September 20, 2008, pages 13–24. ACM Press, 2008.

Together with the core library and generic functions, we also provide an extra package, regular-extras, with additional functionality (dependent on other packages). Currently these extra functions are:


If you have cabal-install, you should use that to install the package, because it will handle everything for you:

cabal install regular


cabal install regular-extras

If you don't have cabal-install, you must download the regular package and the regular-extras package from HackageDB and install them manually. Get the tar.gz files and decompress them.

Once downloaded, use the following commands for configuring, building, and installing the library:

runghc Setup configure
runghc Setup build
runghc Setup install

For more details on the general options available, refer to the Cabal User's Guide.


The source for this library can be downloaded from the Subversion repository as follows:

svn checkout
Topic revision: r5 - 03 Mar 2010, JosePedroMagalhaes

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding UUCS? Send feedback