Bounded package:basement

Types to represent ℤ/nℤ. ℤ/nℤ is a finite field and is defined as the set of natural number: {0, 1, ..., n − 1}.
The Bounded class is used to name the upper and lower limits of a type. Ord is not a superclass of Bounded since types that are not totally ordered may also have upper and lower bounds. The Bounded class may be derived for any enumeration type; minBound is the first constructor listed in the data declaration and maxBound is the last. Bounded may also be derived for single-constructor datatypes whose constituent types are in Bounded.