···4848 ;;
49495050 let union a b = S.fold add a b
5151+ let diff a b = S.fold (fun range acc -> remove range acc) b a
5252+5353+ let inter a b =
5454+ S.fold
5555+ (fun ra acc ->
5656+ S.fold
5757+ (fun rb acc ->
5858+ match R.intersection ra rb with
5959+ | None -> acc
6060+ | Some r -> add r acc)
6161+ b
6262+ acc)
6363+ a
6464+ empty
6565+ ;;
6666+6767+ let cardinal = S.cardinal
6868+ let elements = S.elements
5169 let of_list = List.fold_left (fun acc x -> add x acc) empty
5270 let of_seq = Seq.fold_left (fun acc x -> add x acc) empty
5371 let to_list = S.to_list
+4
lib/desert/range_set.mli
···1414 val add : elt -> t -> t
1515 val remove : elt -> t -> t
1616 val union : t -> t -> t
1717+ val inter : t -> t -> t
1818+ val diff : t -> t -> t
1919+ val cardinal : t -> int
2020+ val elements : t -> elt list
1721 val of_list : elt list -> t
1822 val of_seq : elt Seq.t -> t
1923 val to_seq : t -> elt Seq.t