PosixSpan
PosixSpan :: # (opaque)
A finite, nonempty half-open span on the POSIX microsecond axis.
Example
Construct a half-open interval: the start belongs to it and the end does not.
Equal endpoints return EmptySpan; reversed endpoints return ReversedBounds.
import time.PosixBoundary
import time.PosixSpan
expect {
start = PosixBoundary.from_microseconds(0)
end = PosixBoundary.from_microseconds(1000000)
span = PosixSpan.new(start, end)?
PosixSpan.contains(span, start) and !PosixSpan.contains(span, end)
}
Examples assume a package dependency named time.
from_seconds : Dec, Dec, Rounding -> Try(PosixSpan, [EmptySpan, ReversedBounds, Submicrosecond, OutOfRange, ..])
Apply one explicit rounding policy to both endpoints, then validate.
start : PosixSpan -> PosixBoundary
end : PosixSpan -> PosixBoundary
coordinate_width : PosixSpan -> Try(PosixDelta, [OutOfRange, ..])
microsecond_at : PosixBoundary -> Try(PosixSpan, [OutOfRange, ..])
to_inspect : PosixSpan -> Str
hull : PosixSpan, PosixSpan -> PosixSpan
The smallest span containing both inputs, including any gap between them.
intersection : PosixSpan, PosixSpan -> [Empty, Span(PosixSpan)]
relation : PosixSpan, PosixSpan -> [Before, Meets, Overlaps, Starts, During, Finishes, Equal, FinishedBy, Contains, StartedBy, OverlappedBy, MetBy, After]