@hackage generic-data0.1.1.0
Utilities for GHC.Generics
Installation
Tested Compilers
Dependencies (3)
- base >=4.9 && <4.12
- 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.).
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 the following packages, which may still be useful for old versions of GHC and base not supported by generic-data.
- semigroups: generic
Semigroup,Monoid. - transformers-compat:
generic
Eq1,Ord1,Show1,Read1. - 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: generic-data borrows code from this package to implement defunctionalization.
All contributions are welcome. Open an issue or a pull request on Github!