Hello all,<br><br>I&#39;m pleased to announce a new version of the regular library which provides generic programming with fixed points for regular datatypes.<br><br>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.<br>
<br>This library is the underlying generic representation mechanism in the paper:<br>  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. <a href="http://people.cs.uu.nl/stefan/pubs/noort08lightweight.html">http://people.cs.uu.nl/stefan/pubs/noort08lightweight.html</a><br>
<br>More information is available on the webpage: <a href="http://www.cs.uu.nl/wiki/GenericProgramming/Regular">http://www.cs.uu.nl/wiki/GenericProgramming/Regular</a><br><br>Additionally, we have also released a regular-extras package which provides more generic functions operating on the fixed point view provided by regular. Currently the functions provided are:<br>
  * QuickCheck&#39;s arbitrary, with an option to provide size, and frequencies for each constructor;<br>  * QuickCheck&#39;s coarbitrary;<br>  * Data.Binary get and put.<br><br><br>Features<br>--------<br><br>* A simple library with a fixed point view<br>
<br>* Includes detailed examples, such as the generic fold<br><br>* Forms the basis for a generic rewriting library: <a href="http://hackage.haskell.org/package/rewriting">http://hackage.haskell.org/package/rewriting</a><br>
<br>* In its current form, this library does not support nested datatypes. Support to access parameters of a datatype is limited.<br><br>Requirements<br>------------<br><br>* GHC 6.10.1 or later<br>* Cabal 1.2.1 or later<br>
<br>Download<br>--------<br><br>With cabal-install:<br><br>  cabal install regular<br>  cabal install regular-extras<br><br>Get the packages:<br><br>  <a href="http://hackage.haskell.org/package/regular">http://hackage.haskell.org/package/regular</a><br>
  <a href="http://hackage.haskell.org/package/regular-extras">http://hackage.haskell.org/package/regular-extras</a><br><br>Get the source:<br><br>  svn checkout <a href="https://subversion.cs.uu.nl/repos/project.dgp-haskell.libraries/regular/">https://subversion.cs.uu.nl/repos/project.dgp-haskell.libraries/regular/</a><br>
  svn checkout <a href="https://subversion.cs.uu.nl/repos/project.dgp-haskell.libraries/regular-extras/">https://subversion.cs.uu.nl/repos/project.dgp-haskell.libraries/regular-extras/</a><br><br>Bugs &amp; Support<br>--------------<br>
<br>Report issues, request features, or just discuss the library with the authors, maintainers, and other interested persons at:<br><br>  <a href="http://www.haskell.org/mailman/listinfo/generics">http://www.haskell.org/mailman/listinfo/generics</a><br>
<br><br>Pedro<br>