A representation of numeric intervals (also known as ranges.)
Represents an upper or lower, closed or open endpoint of an Interval.
This encompasses the "endpoints" of unbounded intervals when the bound value
is either of the Infinity values in the floating point spec.
Deprecated, use Bound.Bound directly.
interval is the primary constructor; the others are just for convenience.
Constructs an Interval from two Bounds.
If either of the bounds is NaN the Interval will be empty.
A degenerate Interval.
Convenience function for a lower-bounded Interval (from some n to +∞ included).
Convenience function for a upper-bounded Interval (from -∞ included to some n).
An unbounded Interval over the Extended Reals. [-∞, +∞]
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]`
closure (interval (excludes 0) (excludes 2)) == interval (includes 0) (includes 2)Subtract the second interval from the first one, returning a list of the parts of the first that did not intersect with the second.
E.g.:
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 (excludes 3) (includes 4) -- (3, 4]
d = interval (includes 2) (includes 3) -- [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
]Is this a degenerate (point-valued) interval?
Is this interval unbounded?
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 inclusive?
Is the upper bound of this interval inclusive?
Is the lower bound of this interval exclusive?
Is the upper bound of this interval exclusive?
Returns the lower (left) bound of the interval, returns Nothing if it's empty.
lowerBound (interval (includes 0) (excludes 1)) == Just (includes 0)Returns the upper (right) bound of the interval, returns Nothing if it's empty.
upperBound (interval (includes 0) (excludes 1)) == Just (excludes 1)Arithmetically add two intervals. Given two intervals a and b returns an interval that contains all the number that can be obtained by adding a number from the first interval to a number from the second interval.
Arithmetically subtracts two intervals. Given two intervals a and b returns an interval that contains all the number that can be obtained by subtracting a number from the second interval from a number from the first interval.
An exclusive endpoint of an interval.
Deprecated, use Bound.Exclusive directly.
An inclusive endpoint of an interval.
Deprecated, use Bound.Inclusive directly.
Convenience function for a left-bounded Interval (from some n to +∞ included).
Deprecated, use lowerBounded.
Convenience function for a right-bounded Interval (from -∞ included to some n).
Deprecated, user upperBounded.
Does this interval have a finite lower bound, and an infinite upper bound?
Deprecated, use isLowerBounded.
Does this interval have a finite upper bound, and an infinite lower bound?
Deprecated, use isUpperBounded.
Is the lower bound of this interval open (exclusive)?
Deprecated, use isLowerExclusive.
Is the upper bound of this interval open (exclusive)?
Deprecated, use isUpperExclusive.
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.