An implementation of compressed integer sets using lists of integer ranges. Operations such as adding and membership are O(n) where n is the number of contigous ranges in the set. For data that is mostly serial, n should remain very small.
Note that when n gets very large, in addition to poor performance, this behavior may throw exceptions since some of the code is not tail-recursive.
mem t i test whether
i is a member of the set
ranges t return a list of all ranges that make up the set
max t the biggest number in the set (if it exists)
min t the smallest number in the set (if it exists)