Documentation

The Range Data structure; it is capable of representing any type of range. This is
the primary data structure in this library. Everything should be possible to convert
back into this datatype. All ranges in this structure are inclusively bound.

When you create a range there may be overlaps in your ranges. However, for the sake
of efficiency you probably want the list of ranges with no overlaps. The mergeRanges
function takes a set of ranges and returns the same set specified by the minimum number
of Range objects. A useful function for cleaning up your ranges. Please note that, if
you use any of the other operations on sets of ranges like invert, union and
intersection then this is automatically done for you. Which means that a function like
this is redundant: mergeRanges . intersection

A set of ranges represents a collection of real values without actually instantiating
those values. This allows you to have infinite ranges. However, sometimes you wish to
actually get the values that your range represents, or even get a sample set of the
values. This function generates as many of the values that belong to your range as you
like.