úÎ:44.j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiNone&!"&-23459:;<=?@DFHJLOQRT[\]^abc where on the  should the ticks be placedCa range represented by a (minimum, maximum) tuple very similar to  3https://hackage.haskell.org/package/intervals-0.7.2W but the metaphor and purpose there is closer to a fuzzy value around a central point.jtheta is a bit like 1/infinity-determine whether a point is within the rangeis the range a singleton pointyis the range low higher than the high there well may be an interesting complex-like set of operations on mirrored rangesrange of a foldableµ`rescaleP rold rnew p` rescales a data point from an old range to a new range rescaleP o n (view low o) == view low n rescaleP o n (view high o) == view high n rescaleP a a == idturn a range into a ist of n a"s, that are (view width x/n) apartturn a range into n a/s pleasing to human sense and sensibility the a5s may well lie outside the original range as a resulttake a list of (ascending) ays and make some (ascending) ranges based on OuterPos fromTicks . ticks OuterPos == id ticks OuterPos . fromTicks == id!The unital object derives from:9view range one = one view mid zero = zero ie (-0.5,0.5)"Ktimes may well be some sort of affine transformation lurking under the hood#natural interpretation of an a# as a `Range a` is a singular Range$,natural interpretation of a `Range a` as an a is the mid-point+Tthe convex hull as plus seems like a natural choice, given the cute zero definition./ jkl !"#$%&'()*+,   ( jkl !"#$%&'()*+,None&!"&-23459:;<=?@DFHJLOQRT[\]^abc2+a two-dimensional plane, bounded by ranges.5«an alternative specification; as a 4-dim vector `V4 x y z w` where: - (x,y) is the lower left corner of a rectangle, and - (z,w) is the upper right corner of a rectangle8-determine whether a point is within the range9+is the range a singleton V2 (has zero area)m$the range Rect of a container of R2s>(range specialized to double traversablesnrescales a container of r2's?6scale a double container of r2s from the current range@3rescales a Rect from an old Rect range to a new oneoArescales a container of Rects from an old Rect range to a new oneA!the range of a container of RectsB8scale a double container of Rects from the current rangeC8scale a double container of Rects from the current rangeD1grid points on a rectange, divided up by a V2 IntEGa rectangle divided up by a V2 Int, making a list of smaller rectanglesNnatural interpretation of an a as an `Rect a`Ua convex hull approach'23456789:;<=m>n?@oABCDEFGHIJKLMNOPQRSTU23456789:;<=>?@ABCDE23456=78:9;<>?A@BCDE%23456789:;<=m>n?@oABCDEFGHIJKLMNOPQRSTUNone$!"&-23459:;<=?@DFHJLOQRT[\]^abcZ[\]^_`paqrstubcdefgZ[\]^_`abcdefg]^_`abZ[\egfcdZ[\]^_`paqrstubcdefgv       !"#$%&'()*+,-./01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aabcdefghijklmnopqrstuvwxy*numhask-range-0.0.1-EzNbzutfCCCKW9gQFyCFZnNumHask.Histogram NumHask.Range NumHask.Rectbase Data.OldListinsertTickPosOuterPosInnerPosLowerPosUpperPosMidPosRangerange_...lowhighmidwidthposit singletonelementsingularmirrored intersectioncontainsrangerescalePticks ticksSensible fromTicks$fMetricRangea$fNormedRangea%$fMultiplicativeLeftCancellativeRange&$fMultiplicativeRightCancellativeRange$fMultiplicativeInvertibleRange $fMultiplicativeAssociativeRange$fMultiplicativeUnitalRange$fMultiplicativeMagmaRange$fAdditiveHomomorphicaRange$fAdditiveHomomorphicRangea $fMonoidRange$fSemigroupRange$fAdditiveRange$fAdditiveCommutativeRange$fAdditiveAssociativeRange$fAdditiveUnitalRange$fAdditiveMagmaRange$fArbitraryRange $fEqRange $fOrdRange $fShowRange$fFunctorRange $fEqTickPosRectxyrect positRectmidRect elementRect singularRect singletonRectintersectionRect containsRectcornersrangeR2sscaleR2s rescaleRect rangeRects scaleRects scaleRectssgridPgrid$fMetricRectV2$fNormedRectV2%$fMultiplicativeRightCancellativeRect$$fMultiplicativeLeftCancellativeRect$fMultiplicativeInvertibleRect$fMultiplicativeAssociativeRect$fMultiplicativeUnitalRect$fMultiplicativeMagmaRect$fAdditiveHomomorphicV2Rect $fMonoidRect$fSemigroupRect$fAdditiveRect$fAdditiveCommutativeRect$fAdditiveAssociativeRect$fAdditiveUnitalRect$fAdditiveMagmaRect $fShowRect$fEqRect $fOrdRect $fFunctorRect DealOvers IgnoreOvers IncludeOvers Histogram_cuts_valuesfreqfillinsertWinsertWsfromHistlabelshist$fShowHistogram $fEqHistogramthetatwohalfrangeR2 rescaleR2 rescaleRectsfreq'countcountW countBoolhistMaphistMapW