Monoid package:numeric-prelude
Abstract concept of a Monoid. Will be used in order to generate type
classes for generic algebras. An algebra is a vector space that also
is a monoid. Should we use the Monoid class from base library despite
its unfortunate method name mappend?