This is a typeclass to represent things which increase. Note that it is important
that a value after being incremented is always larger than it was before. Note
that next returns Option because this class comes with the notion of the "greatest"
key, which is None. Ints, for example, will cycle if next(java.lang.Integer.MAX_VALUE)
is called, therefore we need a notion of what happens when we hit the bounds at
which our ordering is violating. This is also useful for closed sets which have a fixed
progression.
This is a typeclass to represent things which increase. Note that it is important that a value after being incremented is always larger than it was before. Note that next returns Option because this class comes with the notion of the "greatest" key, which is None. Ints, for example, will cycle if next(java.lang.Integer.MAX_VALUE) is called, therefore we need a notion of what happens when we hit the bounds at which our ordering is violating. This is also useful for closed sets which have a fixed progression.