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.

new : PosixBoundary, PosixBoundary -> Try(PosixSpan, [EmptySpan, ReversedBounds, ..])
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
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]