Class
Enum defines operations on sequentially ordered types.
The
enumFrom... methods are used in Haskell's translation of
arithmetic sequences.
Instances of
Enum may be derived for any enumeration type
(types whose constructors have no fields). The nullary constructors
are assumed to be numbered left-to-right by
fromEnum from
0 through
n-1. See Chapter 10 of the
Haskell
Report for more details.
For any type that is an instance of class
Bounded as well as
Enum, the following should hold:
enumFrom x = enumFromTo x maxBound
enumFromThen x y = enumFromThenTo x y bound
where
bound | fromEnum y >= fromEnum x = maxBound
| otherwise = minBound