emgm: Extensible and Modular Generics for the Masses
EMGM is a general-purpose library for generic programming with type classes.
The design is based on the idea of modeling algebraic datatypes as sum-of-product structures. Many datatypes can be modeled this way, and because they all share a common structure, we can write generic functions that work on this structure.
The library provides three main components:
Common - A common foundation for building generic functions and adding support for datatypes. This includes the collection of datatypes (e.g. sum, product, unit) and type classes (e.g. Generic, Rep), that are used throughout the library. This is what you need to define your own generic functions, to add generic support for your datatype, or to define ad-hoc cases.
Data - Support for using standard datatypes generically. Types such as [a], tuples, and Maybe are built into Haskell or come included in the standard libraries. EMGM provides full support for generic functions on these datatypes. The modules in this component are also useful as guides when adding generic support for your own datatypes.
Functions - A collection of useful generic functions. These work with a variety of datatypes and provide a wide range of operations. For example, there is crush, a generalization of the fold functions. It is one of the most useful functions, because it allows you to flexibly extract the elements of a polymorphic container.
For more information on the EMGM library, see the homepage: http://www.cs.uu.nl/wiki/GenericProgramming/EMGM
| Versions | 0.1, 0.2, 0.3, 0.3.1 |
|---|---|
| Dependencies | base (>=3.0 && <4.0), template-haskell (<2.3) or base (>=3.0 && <4.0), template-haskell (>=2.3 && <2.4) |
| License | BSD3 |
| Copyright | (c) 2008 Universiteit Utrecht |
| Author | Sean Leather, José Pedro Magalhães, Alexey Rodriguez, Andres Löh |
| Maintainer | generics@haskell.org |
| Stability | experimental |
| Category | Generics |
| Home page | http://www.cs.uu.nl/wiki/GenericProgramming/EMGM |
| Executables | test |
| Upload date | Fri Jan 30 13:22:38 UTC 2009 |
| Uploaded by | SeanLeather |
| Built on | ghc-6.10 |
| Build failure | ghc-6.12 (log) |
| Distributions | Arch: 0.3.1 |
Modules
Downloads
- emgm-0.2.tar.gz (Cabal source package)
- package description (included in the package)
