úÎGCD!        Safe-Inferred!"#$!"#$!"#$ Safe-Inferred %&'()*+,- %&'()*+,- %&'()*+,- Safe-Inferred UA Range Tree is a construct that can be built and then efficiently evaluated so that V you can compress an entire tree of operations on ranges into a single range quickly. V The only purpose of this tree is to allow efficient construction of range operations ' that can be evaluated as is required. 9A leaf with a set of ranges that are collected together. Invert a range tree, this is a . operation. 9Combine two range trees together with a single operation NThese are the operations that can join two disjunct lists of ranges together. +Represents the set intersection operation. $Represents the set union operation. SThe Range Data structure; it is capable of representing any type of range. This is V the primary data structure in this library. Everything should be possible to convert N back into this datatype. All ranges in this structure are inclusively bound. .Represents an infinite range over all values. 7Represents a range with only an inclusive upper bound. 7Represents a range with only an inclusive lower bound. 6Represents a bounded and inclusive range of elements. (Represents a single element as a range.     Safe-Inferred/0123456789:;<=>?@ABCDE/0123456789:;<=>?@ABCDE/1023456789:;<=>?@ABCDE  Safe-InferredFFF Safe-Inferred TEvaluates a Range Tree into the final set of ranges that it compresses down to. Use I this whenever you want to finally evaluate your constructed Range Tree.      Safe-InferredSPerforms a set union between the two input ranges and returns the resultant set of  ranges. ZPerforms a set intersection between the two input ranges and returns the resultant set of  ranges. SAn inversion function, given a set of ranges it returns the inverse set of ranges. NA check to see if two ranges overlap. If they do then true is returned; false  otherwise. TGiven a range and a value it will tell you wether or not the value is in the range. ) Remember that all ranges are inclusive. UGiven a list of ranges this function tells you if a value is in any of those ranges. 4 This is especially useful for more complex ranges. TWhen you create a range there may be overlaps in your ranges. However, for the sake V of efficiency you probably want the list of ranges with no overlaps. The mergeRanges Y function takes a set of ranges and returns the same set specified by the minimum number W of Range objects. A useful function for cleaning up your ranges. Please note that, if N you use any of the other operations on sets of ranges like invert, union and X intersection then this is automatically done for you. Which means that a function like / this is redundant: mergeRanges . intersection VA set of ranges represents a collection of real values without actually instantiating W those values. This allows you to have infinite ranges. However, sometimes you wish to U actually get the values that your range represents, or even get a sample set of the X values. This function generates as many of the values that belong to your range as you  like.    Safe-InferredUThe Nested Range is a structure that in a nested form of many ranges where there can $ be multiple ranges at every level. QGiven a list of nested values and a nested range tell us wether the nested value ! exists inside the nested range.  Safe-InferredQThe arguments that are used, and can be modified, while parsing a standard range  string. %A separator that represents a union. 6A separator that separates the two halves of a range. -A separator that implies an unbounded range. UThese are the default arguments that are used by the parser. Please feel free to use S the default arguments for you own parser and modify it from the defaults at will. VGiven a string this function will either return a parse error back to the user or the ; list of ranges that are represented by the parsed string. VGiven the parser arguments this returns a parser that is capable of parsing a list of  ranges. G H  G HI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP QRST range-0.1.0.0Data.Range.RangeTreeData.Range.RangeData.Range.NestedRangeData.Range.ParserData.Range.UtilData.Range.SpansData.Range.DataData.Range.RangeInternalData.Range.RangeTreeInternal RangeTree RangeLeafRangeNodeInvert RangeNodeRangeOperationRangeIntersection RangeUnionRange InfiniteRangeUpperBoundRangeLowerBoundRange SpanRangeSingletonRangeevaluateunion intersectioninvert rangesOverlapinRangeinRanges mergeRanges fromRanges NestedRange inNestedRangeRangeParserArgsArgsunionSeparatorrangeSeparatorwildcardSymbol defaultArgs parseRangesranges insertionSort isBetween takeEvenlypairsinsertionSortSpansspanCmpintersectSpans insertSpan sortSpans joinSpans unionSpans invertSpans hasOverlapsghc-prim GHC.Classesnot RangeMergeIRMRMlargestLowerBoundlargestUpperBound spanRangesemptyRangeMerge storeRange storeRanges loadRangesexportRangeMergeintersectSpansRM intersectWithfixLowerfixUpperintersectionRangeMergescalculateBoundOverlapunionRangeMergesfilterLowerBoundfilterUpperBoundboundCmp appendSpanRMinvertRMevaluateRangeTreestring_ readSection