emgm: Extensible and Modular Generics for the Masses
EMGM is a general-purpose library for datatype-generic programming.
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 primary features of the library are:
A foundation for building generic functions. EMGM includes a collection of datatypes (e.g. sum, product, and unit) and type classes (e.g.
Generic
andRep
). Everything you need for defining generic functions and supporting datatypes can be found here.Many useful generic functions. These provide a wide range of functionality. For example, there is
crush
, a generalization of the foldl/foldr functions, that allows you to flexibly extract the elements of a polymorphic container. Now, you can do many of the operations with your container that were previously only available for lists.Support for standard datatypes. EMGM supports standard types: primitives (e.g.
Int
andFloat
),Bool
, lists, tuples,Maybe
, etc.
NOTE: As of version 0.4, this library does not have Template Haskell for generating the representation. We are working on another library for a solution to this problem.
[Skip to Readme]
Modules
[Index]
- Generics
- Generics.EMGM
- Generics.EMGM.Base
- Data
- Functions
- Generics.EMGM.Functions.Collect
- Generics.EMGM.Functions.Compare
- Generics.EMGM.Functions.Crush
- Generics.EMGM.Functions.Enum
- Generics.EMGM.Functions.Everywhere
- Generics.EMGM.Functions.Map
- Generics.EMGM.Functions.Meta
- Generics.EMGM.Functions.Read
- Generics.EMGM.Functions.Show
- Generics.EMGM.Functions.Transpose
- Generics.EMGM.Functions.UnzipWith
- Generics.EMGM.Functions.ZipWith
- Generics.EMGM.Representation
- Generics.EMGM
Downloads
- emgm-0.4.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1, 0.2, 0.3, 0.3.1, 0.4 |
---|---|
Dependencies | base (>=3.0 && <5.0) [details] |
Tested with | ghc ==7.0.1 |
License | BSD-3-Clause |
Copyright | (c) 2008 - 2011 Universiteit Utrecht |
Author | Sean Leather, José Pedro Magalhães, Alexey Rodriguez, Andres Löh |
Maintainer | generics@haskell.org |
Category | Generics |
Home page | http://www.cs.uu.nl/wiki/GenericProgramming/EMGM |
Source repo | head: git clone git://github.com/spl/emgm.git |
Uploaded | by SeanLeather at 2011-09-21T15:58:05Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 4305 total (14 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |