A representation of numeric intervals (also known as ranges.)
Opaque type; do not export tags.
interval is the primary constructor; the others are just for convenience.
Constructs an Interval from two Bounds.
A degenerate Interval.
An empty Interval.
Convenience function for a left-bounded Interval (from some n to +∞)
Convenience function for a right-bounded Interval (from -∞ to some n)
An unbounded Interval over the Extended Reals. [-∞, +∞]
An exclusive endpoint of an interval.
An inclusive endpoint of an interval.
The convex hull of two intervals. This is similar to union in that it includes all the points of the component intervals, and for non-overlapping intervals, the points between them.
The intersection of two intervals. If the intervals overlap, this is the common part. If not, this is the empty interval.
Return a String representation of an Interval.
Returns the largest open interval contained within a.
-- `interior([x, y]) == (x, y)`
interior (interval (includes 0) (includes 2)) == interval (excludes 0) (excludes 2)Returns the smallest closed interval containing a.
-- `closure((x, y)) == [x, y]`
interior (interval (excludes 0) (excludes 2)) == interval (includes 0) (includes 2)Extract the value of the upper bound of an Interval.
Extract the value of the lower bound of an Interval.
Are these two intervals adjoins? I.e., do they share an upper-lower or lower-upper bound, exactly one of which is closed, and do not intersect each other?
let
a = interval (includes 1) (excludes 3) -- [1, 3)
b = interval (includes 2) (includes 4) -- [3, 4]
c = interval (includes 3) (includes 4) -- (3, 4]
d = interval (includes 3) (includes 4) -- [2, 3]
in
[ adjoins a b = True
, adjoins a c = False
, adjoins a d = False
]Do these two intervals intersect?
let
a = interval (includes 1) (excludes 3)
b = interval (includes 2) (includes 4)
c = interval (includes 3) (includes 4)
in
[ intersects a b = True
, intersects a c = False
]Does this interval contain the given point?
let
a = interval (includes 1) (excludes 3)
in
[ intersectsPoint a 0 = False
, intersectsPoint a 1 = True
, intersectsPoint a 3 = False
]Does this interval have finite bounds?
Is this a degenerate (point-valued) interval?
Is this an empty interval?
Does this interval have a finite lower bound, and an infinite upper bound?
Does this interval have a finite upper bound, and an infinite lower bound?
Is the lower bound of this interval open?
Is the upper bound of this interval open?
An interval over the reals. May be over either the Ordinary Reals
(-∞, +∞)or the Extended Reals[-∞, +∞].Bounded x ywill always satisfyx < y. (x == yis either degenerate or empty)(Opaque type; do not export tags)