<div dir="ltr"><span style="font-family: courier new,monospace;">Extensible and Modular Generics for the Masses</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">==============================================</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Extensible and Modular Generics for the Masses (EMGM) is a library for generic programming in Haskell using type classes.<br>
<br>This is the initial release of a maintained library for EMGM. Other versions have previously existed in various states from various sources. We plan to continue updating and maintaining this version.</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Visit the home page:<br><br>&nbsp; </span><span style="font-family: courier new,monospace;"><a href="http://www.cs.uu.nl/wiki/GenericProgramming/EMGM" target="_blank">http://www.cs.uu.nl/wiki/GenericProgramming/EMGM</a></span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Features</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--------</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">The primary features of EMGM include:</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Datatype-generic programming using sum-of-product views</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Large collection of ready-to-use generic functions</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Included support for standard datatypes: lists, Maybe, tuples</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Easy to add support for new datatypes</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Type classes make writing new functions straightforward in a structurally inductive style</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Generic functions are extensible with ad-hoc cases for arbitrary datatypes</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Good performance of generic functions</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">The features of this distribution include:</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;The API is thoroughly documented with Haddock</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Fully tested with QuickCheck and HUnit</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Program coverage ensures that all useful code has been touched by tests</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Tested on both Mac and Windows systems</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Requirements</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">------------</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">EMGM has the following requirements:</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;GHC 6.8.1 - It has been tested with versions 6.8.3 and 6.9.20080916.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Cabal library 1.2.1 - It has been tested with versions 1.2.3 and <a href="http://1.4.0.1" target="_blank">1.4.0.1</a>.</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Download &amp; Source</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">-----------------<br>
<br>Use caball-install:<br><br>&nbsp; cabal install emgm<br></span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Get the package:<br><br>&nbsp; </span><span style="font-family: courier new,monospace;"><a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/emgm" target="_blank">http://hackage.haskell.org/cgi-bin/hackage-scripts/package/emgm</a></span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Get the source:<br><br>&nbsp; </span><span style="font-family: courier new,monospace;">svn checkout <a href="https://svn.cs.uu.nl:12443/repos/dgp-haskell/EMGM" target="_blank">https://svn.cs.uu.nl:12443/repos/dgp-haskell/EMGM</a></span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Examples</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--------</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Check out the examples:<br><br>&nbsp; </span><span style="font-family: courier new,monospace;"><a href="https://svn.cs.uu.nl:12443/viewvc/dgp-haskell/EMGM/examples/" target="_blank">https://svn.cs.uu.nl:12443/viewvc/dgp-haskell/EMGM/examples/</a></span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Bugs &amp; Support</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--------------</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Report issues or request features:<br><br>&nbsp; </span><span style="font-family: courier new,monospace;"><a href="http://code.google.com/p/emgm/" target="_blank">http://code.google.com/p/emgm/</a></span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Discuss EMGM with the authors, maintainers, and other interested persons:<br><br>&nbsp; </span><span style="font-family: courier new,monospace;"><a href="http://www.haskell.org/mailman/listinfo/generics" target="_blank">http://www.haskell.org/mailman/listinfo/generics</a></span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">Credits</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">-------</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">The research for EMGM originated with Ralf Hinze. It was extended with work by Bruno Oliveira and Andres Löh. More details of the library functionality were explored by Alexey Rodriguez. We are very grateful to all of these people for the foundation on which this library was built.</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">The current authors and maintainers of EMGM are:</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Sean Leather</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;José Pedro Magalhães</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">* &nbsp;Alexey Rodriguez</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">* &nbsp;Andres Löh</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"></div>