package lsp
LSP protocol implementation in OCaml
Install
Dune Dependency
Authors
-
AAndrey Popp <8mayday@gmail.com>
-
RRusty Key <iam@stfoo.ru>
-
LLouis Roché <louis@louisroche.net>
-
OOleksiy Golovko <alexei.golovko@gmail.com>
-
RRudi Grinberg <me@rgrinberg.com>
-
SSacha Ayoun <sachaayoun@gmail.com>
-
Ccannorin <cannorin@gmail.com>
-
UUlugbek Abdullaev <ulugbekna@gmail.com>
-
Thibaut Mattio
-
MMax Lantas <mnxndev@outlook.com>
Maintainers
Sources
jsonrpc-1.10.3.tbz
sha256=a3ac1073b0728b94f4bdb0111772c0abaf7ff70324399450eab7156bfac151f1
sha512=bed6ddbde28088e43db0d40ab27056ba22537d19ffe8117a3da4c77676948f18708b06937dd2c972dce5c5822ea751c9c85cfa1ce3c1b3739460d4a24ebc2282
doc/src/lsp.stdune/set.ml.html
Source file set.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
# 1 "submodules/dune/otherlibs/stdune/set.ml" module type S = Set_intf.S module Make (Key : Map_intf.Key) (M : Map_intf.S with type key = Key.t) = struct include Stdlib.MoreLabels.Set.Make (struct type t = Key.t let compare x y = Ordering.to_int (Key.compare x y) end) type 'a map = 'a M.t let to_list = elements let to_list_map t ~f = (* optimize if we get a right fold *) fold t ~init:[] ~f:(fun a acc -> f a :: acc) |> List.rev let mem t x = mem x t let add t x = add x t let remove t x = remove x t let compare a b = Ordering.of_int (compare a b) let is_subset t ~of_ = subset t of_ let iter t ~f = iter t ~f let map t ~f = map t ~f let fold t ~init ~f = fold t ~init ~f let for_all t ~f = for_all t ~f let exists t ~f = exists t ~f let filter t ~f = filter t ~f let partition t ~f = partition t ~f let min_elt = min_elt_opt let max_elt = max_elt_opt let choose = choose_opt let split x t = split t x let union_map l ~f = List.fold_left ~init:empty l ~f:(fun acc x -> let s = f x in union acc s) let union_all l = union_map l ~f:(fun x -> x) exception Found of elt let find t ~f = match iter t ~f:(fun e -> if f e then raise_notrace (Found e) else ()) with | () -> None | exception Found e -> Some e let to_dyn t = Dyn.Set (to_list t |> List.map ~f:Key.to_dyn) let choose_exn t = match choose t with | Some e -> e | None -> Code_error.raise "Set.choose_exn" [ ("t", to_dyn t) ] let of_keys = M.foldi ~init:empty ~f:(fun k _ acc -> add acc k) let to_map t ~f = fold t ~init:M.empty ~f:(fun k acc -> M.set acc k (f k)) let of_list_map xs ~f = (* We don't [fold_left] & [add] over [xs] because [of_list] has a specialized implementation *) List.map xs ~f |> of_list end module Of_map (Key : Map_intf.Key) (Map : Map_intf.S with type key = Key.t) = struct type elt = Key.t type 'a map = 'a Map.t type t = unit Map.t let empty = Map.empty let is_empty = Map.is_empty let singleton x = Map.singleton x () let cardinal = Map.cardinal let equal a b = Map.equal a b ~equal:(fun () () -> true) let compare a b = Map.compare a b ~compare:(fun () () -> Eq) let to_list = Map.keys let to_list_map t ~f = (* optimize if we get a right fold *) Map.to_list_map t ~f:(fun a () -> f a) let mem t x = Map.mem t x let add t x = Map.set t x () let remove t x = Map.remove t x exception Not_a_subset let is_subset t ~of_ = match Map.merge t of_ ~f:(fun _key a b -> match (a, b) with | Some (), None -> raise_notrace Not_a_subset | _ -> None) with | (_ : t) -> true | exception Not_a_subset -> false let iter t ~f = Map.iteri t ~f:(fun k () -> f k) let fold t ~init ~f = Map.foldi t ~init ~f:(fun k () acc -> f k acc) let map t ~f = fold t ~init:empty ~f:(fun x acc -> add acc (f x)) let for_all t ~f = Map.for_alli t ~f:(fun k () -> f k) let exists t ~f = Map.existsi t ~f:(fun k () -> f k) let filter t ~f = Map.filteri t ~f:(fun k () -> f k) let partition t ~f = Map.partitioni t ~f:(fun k () -> f k) let min_elt t = Map.min_binding t |> Option.map ~f:fst let max_elt t = Map.max_binding t |> Option.map ~f:fst let choose t = Map.choose t |> Option.map ~f:fst let split t x = let a, x, b = Map.split t x in (a, Option.is_some x, b) let union a b = Map.union a b ~f:(fun _k () () -> Some ()) let diff a b = Map.merge a b ~f:(fun _k a b -> match b with | Some () -> None | None -> a) let inter a b = Map.merge a b ~f:(fun _k a b -> match a with | Some () -> b | None -> None) let union_map l ~f = List.fold_left ~init:empty l ~f:(fun acc x -> let s = f x in union acc s) let union_all l = union_map l ~f:(fun x -> x) exception Found of elt let find t ~f = match iter t ~f:(fun e -> if f e then raise_notrace (Found e) else ()) with | () -> None | exception Found e -> Some e let to_dyn t = Dyn.Set (to_list t |> List.map ~f:Key.to_dyn) let choose_exn t = match choose t with | Some e -> e | None -> Code_error.raise "Set.choose_exn" [ ("t", to_dyn t) ] let of_keys t = Map.map t ~f:ignore let to_map t ~f = Map.mapi t ~f:(fun k () -> f k) let of_list l = List.fold_left l ~init:empty ~f:add let of_list_map l ~f = List.fold_left l ~init:empty ~f:(fun acc x -> add acc (f x)) let to_seq t = Map.to_seq t |> Seq.map ~f:fst end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>