Module Interval.Ofday
include Bin_prot.Binable.S with type t := t
include Bin_prot.Binable.S_only_functions with type t := t
- val bin_size_t : t Bin_prot.Size.sizer
- val bin_write_t : t Bin_prot.Write.writer
- val bin_read_t : t Bin_prot.Read.reader
- val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
- This function only needs implementation if - texposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the variant- tafterwards.
- val bin_shape_t : Bin_prot.Shape.t
- val bin_writer_t : t Bin_prot.Type_class.writer
- val bin_reader_t : t Bin_prot.Type_class.reader
- val bin_t : t Bin_prot.Type_class.t
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
- val t_of_sexp : Sexplib0.Sexp.t -> t
- val sexp_of_t : t -> Sexplib0.Sexp.t
- val compare : t -> t -> int
- val hash_fold_t : Base.Hash.state -> t -> Base.Hash.state
- val hash : t -> Base.Hash.hash_value
- type bound- = Core__.Import_time.Time.Ofday.t
- type 'a t
- type 'a bound
- boundis the type of points in the interval (and therefore of the bounds).- boundis instantiated in two different ways below: in- module type Sas a monotype and in- module type S1as- 'a.
- val create : 'a bound -> 'a bound -> 'a t
- create l ureturns the interval with lower bound- land upper bound- u, unless- l > u, in which case it returns the empty interval.
- val empty : 'a t
- val intersect : 'a t -> 'a t -> 'a t
- val is_empty : 'a t -> bool
- val is_empty_or_singleton : 'a t -> bool
- val bounds : 'a t -> ('a bound * 'a bound) option
- val lbound : 'a t -> 'a bound option
- val ubound : 'a t -> 'a bound option
- val bounds_exn : 'a t -> 'a bound * 'a bound
- val lbound_exn : 'a t -> 'a bound
- val ubound_exn : 'a t -> 'a bound
- val convex_hull : 'a t list -> 'a t
- convex_hull tsreturns an interval whose upper bound is the greatest upper bound of the intervals in the list, and whose lower bound is the least lower bound of the list.- Suppose you had three intervals - a,- b, and- c:- a: ( ) b: ( ) c: ( ) hull: ( )- In this case the hull goes from - lbound_exn ato- ubound_exn c.
- val contains : 'a t -> 'a bound -> bool
- val compare_value : 'a t -> 'a bound -> [ `Below | `Within | `Above | `Interval_is_empty ]
- val bound : 'a t -> 'a bound -> 'a bound option
- bound t xreturns- Noneiff- is_empty t. If- bounds t = Some (a, b), then- boundreturns- Some ywhere- yis the element of- tclosest to- x. I.e.:- y = a if x < a y = x if a <= x <= b y = b if x > b
- val is_superset : 'a t -> of_:'a t -> bool
- is_superset i1 of_:i2is whether i1 contains i2. The empty interval is contained in every interval.
- val is_subset : 'a t -> of_:'a t -> bool
- val map : 'a t -> f:('a bound -> 'b bound) -> 'b t
- map t ~freturns- create (f l) (f u)if- bounds t = Some (l, u), and- emptyif- tis empty. Note that if- f l > f u, the result of- mapis- empty, by the definition of- create.- If you think of an interval as a set of points, rather than a pair of its bounds, then - mapis not the same as the usual mathematical notion of mapping- fover that set. For example,- map ~f:(fun x -> x * x)maps the interval- [-1,1]to- [1,1], not to- [0,1].
- val are_disjoint : 'a t list -> bool
- are_disjoint tsreturns- trueiff the intervals in- tsare pairwise disjoint.
- val are_disjoint_as_open_intervals : 'a t list -> bool
- Returns true iff a given set of intervals would be disjoint if considered as open intervals, e.g., - (3,4)and- (4,5)would count as disjoint according to this function.
- val list_intersect : 'a t list -> 'a t list -> 'a t list
- Assuming that - ilist1and- ilist2are lists of disjoint intervals,- list_intersect ilist1 ilist2considers the intersection- (intersect i1 i2)of every pair of intervals- (i1, i2), with- i1drawn from- ilist1and- i2from- ilist2, returning just the non-empty intersections. By construction these intervals will be disjoint, too. For example:- let i = Interval.create;; list_intersect [i 4 7; i 9 15] [i 2 4; i 5 10; i 14 20];; [(4, 4), (5, 7), (9, 10), (14, 15)]- Raises an exception if either input list is non-disjoint. 
- val half_open_intervals_are_a_partition : 'a t list -> bool
- Returns true if the intervals, when considered as half-open intervals, nestle up cleanly one to the next. I.e., if you sort the intervals by the lower bound, then the upper bound of the - nth interval is equal to the lower bound of the- n+1th interval. The intervals do not need to partition the entire space, they just need to partition their union.