generic-data: Utilities for GHC.Generics

[ library, mit, other ] [ Propose Tags ]

This package provides common functions on generic types. See README.


[Skip to Readme]
Versions 0.1.0.0, 0.1.1.0
Dependencies base (>=4.9 && <5), contravariant, show-combinators [details]
License MIT
Copyright 2018 Li-yao Xia
Author Li-yao Xia
Maintainer lysxia@gmail.com
Category Other
Home page https://github.com/Lysxia/generic-data#readme
Source repo head: git clone https://github.com/Lysxia/generic-data
Uploaded by lyxia at Wed Mar 28 04:02:42 UTC 2018
Distributions NixOS:0.1.1.0
Downloads 64 total (32 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-03-28 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for generic-data-0.1.0.0

[back to package description]

Generic data types in Haskell Build Status

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.Generics to 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!