A collection of experiments, more or less organized.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

More `Set` operation

xvw efaa4097 2b011325

+26 -1
+4 -1
lib/desert/range_set.md
··· 64 64 - : string list = [] 65 65 ``` 66 66 67 - 68 67 ```ocaml 69 68 # r |> S.add range_g |> S.add range_h |> S.remove range_a |> dump 70 69 - : string list = ["2026-04-12 .. 2026-04-30"] 71 70 ``` 72 71 73 72 73 + ```ocaml 74 + # S.inter (r |> S.add range_a) (r |> S.add range_b) |> dump ;; 75 + - : string list = ["2026-04-07 .. 2026-04-07"] 76 + ```
+18
lib/desert/range_set.ml
··· 48 48 ;; 49 49 50 50 let union a b = S.fold add a b 51 + let diff a b = S.fold (fun range acc -> remove range acc) b a 52 + 53 + let inter a b = 54 + S.fold 55 + (fun ra acc -> 56 + S.fold 57 + (fun rb acc -> 58 + match R.intersection ra rb with 59 + | None -> acc 60 + | Some r -> add r acc) 61 + b 62 + acc) 63 + a 64 + empty 65 + ;; 66 + 67 + let cardinal = S.cardinal 68 + let elements = S.elements 51 69 let of_list = List.fold_left (fun acc x -> add x acc) empty 52 70 let of_seq = Seq.fold_left (fun acc x -> add x acc) empty 53 71 let to_list = S.to_list
+4
lib/desert/range_set.mli
··· 14 14 val add : elt -> t -> t 15 15 val remove : elt -> t -> t 16 16 val union : t -> t -> t 17 + val inter : t -> t -> t 18 + val diff : t -> t -> t 19 + val cardinal : t -> int 20 + val elements : t -> elt list 17 21 val of_list : elt list -> t 18 22 val of_seq : elt Seq.t -> t 19 23 val to_seq : t -> elt Seq.t