@hackage generic-data0.3.0.0
Utilities for GHC.Generics
Installation
Tested Compilers
Dependencies (4)
- base >=4.9 && <4.17
- base-orphans >=0.8 && <0.9.3
- contravariant
- show-combinators Show all…
Dependents (25)
@hackage/swarm, @hackage/hypertypes, @hackage/compaREST, @hackage/acts, @hackage/groups-generic, @hackage/Agda, Show all…
Generic data types in Haskell

Utilities for GHC.Generics.
Generic deriving for standard classes
Supported classes that GHC currently can't derive: Semigroup, Monoid,
Applicative, Alternative, Eq1, Ord1, Show1.
Other classes from base are also supported, even though GHC can already derive them:
Eq,Ord,Enum,Bounded,Show(standard);Functor,Foldable,Traversable(via extensions,DeriveFunctor, etc.).
(Read is currently not implemented.)
To derive type classes defined elsewhere, it might be worth taking a look at one-liner.
Type metadata
Extract type names, constructor names, number and arities of constructors, etc..
Related links
generic-data aims to subsume generic deriving features of the following packages:
- semigroups: generic
Semigroup,Monoid, but with a heavy dependency footprint. - transformers-compat:
generic
Eq1,Ord1,Show1. - generic-deriving:
doesn't derive the classes in base (defines clones of these classes as a toy
example); has Template Haskell code to derive
Generic.
Here are other relevant links.
- deriving-compat: deriving with Template Haskell.
- one-liner: another approach
to using
GHC.Genericsto derive instances of many type classes, including but not restricted to the above classes (this is done in one-liner-instances). - singletons, first-class-families (second one written by me) libraries for dependently-typed programming in Haskell.
All contributions are welcome. Open an issue or a pull request on Github!