- move to transducer for walking the tagged range boundary items
- remove use of core.match, after getting logic correct to reduce
loading of unneeded library
- added docstrings to function
- added type hints and removed reflection warnings
add lower level logic for walking the boundary markers of sets
but distinguish between a source range and a filter range when
looking at the start and end boundary behavior
deftype gives different object instances which causes comparisons
of sets with different instances to fail, as it check the instance
equality instead of value equality, which can be provided by
using defrecord instead of deftype
ranges have previously been consolidated by having overlapping ranges be
combined, resuting in a (possibly) consolidated set of ranges, which
are now ordered by start and end dates.
Add a transducer step to walk those ranges and find any pairs of ranges
where the pair of ranges abutt each other, and combine them into
a single range.
transduce over the ordered range values starts and ends and do the
stack push/pop matching over the start and end values to consolidate
the overlapping ranges and result in a new set of consolidated and
sorted range values.