Generic Programming
People
Publications
Projects
Libraries
Teaching
Events
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
?
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Multirec
GenericProgramming
---++ Introduction 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.<br/> [[http://people.cs.uu.nl/andres/Rec/MutualRec.pdf][Generic programming with fixed points for mutually recursive datatypes]]<br/> Accepted at ICFP 2009 ---++ Download Get the latest version of [[http://hackage.haskell.org/package/multirec][multirec from Hackage]]: <pre> cabal install multirec </pre> ---++ Development The [[https://github.com/kosmikus/multirec][repository]] for multirec is on Github. ---++ Bug reports The [[https://github.com/kosmikus/multirec/issues][bug tracker]] for multirec is also on Github. -- Main.AndresLoeh - 30 Oct 2011