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.

The module 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: