A library to support the definition of generic functions. Datatypes are viewed in a uniform, structured way: the choice between constructors is represented using an n-ary sum, and the arguments of each constructor are represented using an n-ary product.
Generics.SOP is the main module of this library and contains
more detailed documentation.
Examples of using this library are provided by the following packages:
pretty-sopgeneric pretty printing,
lens-sopgenerically computed lenses,
json-sopgeneric JSON conversions.
A detailed description of the ideas behind this library is provided by the paper:
Edsko de Vries and Andres Löh. True Sums of Products. Workshop on Generic Programming (WGP) 2014.