Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Andres Loeh <andres <at> cs.uu.nl>
Subject: ANNOUNCE: multirec-0.1
Newsgroups: gmane.comp.lang.haskell.general
Date: Friday 31st October 2008 14:48:48 UTC (over 8 years ago)
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

Features
--------

* Generalizes the fixed point view from single, regular datatypes to
systems
  of recursive datatypes.

* Includes detailed examples: generic fold and generic compos, the latter
  in the style of

    Björn Bringert, Arne Ranta
    A pattern for almost compositional functions
    ICFP 2006
  
  The Zipper and generic rewriting for systems of datatypes 
  will be released soon as separate libraries that build on multirec.

* The generic compos functions do not require the user to modify
  their existing systems of datatypes.

* In its current form, this library does not support nested 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


-- 

Andres Loeh, Universiteit Utrecht

mailto:[email protected]     mailto:[email protected]
http://www.andres-loeh.de
 
CD: 3ms