package dune-private-libs
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Private libraries of Dune
Install
dune-project
Dependency
Authors
Maintainers
Sources
dune-2.5.1.tbz
sha256=8f77d3a87f208e0d7cccaa1c48c4bb1bb87d62d07c3f25e9b8ba298e028ce52b
sha512=f209f12ced10c1abf8782bdb0143f4cec77795f7174d2cc75130afb1e01550b01f2f77b9e3ec4888efdad83d2f9878d179b39126f824f4e522f3ef4da34bf27e
doc/src/dune-private-libs.stdune/top_closure.ml.html
Source file top_closure.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 36module Make (Keys : Top_closure_intf.Keys) (Monad : Monad_intf.S1) = struct open Monad let top_closure ~key ~deps elements = let visited = ref Keys.empty in let res = ref [] in let rec loop elt ~temporarily_marked = let key = key elt in if Keys.mem temporarily_marked key then return (Error [ elt ]) else if not (Keys.mem !visited key) then ( visited := Keys.add !visited key; let temporarily_marked = Keys.add temporarily_marked key in deps elt >>= iter_elts ~temporarily_marked >>= function | Ok () -> res := elt :: !res; return (Ok ()) | Error l -> return (Error (elt :: l)) ) else return (Ok ()) and iter_elts elts ~temporarily_marked = return elts >>= function | [] -> return (Ok ()) | elt :: elts -> ( loop elt ~temporarily_marked >>= function | Error _ as result -> return result | Ok () -> iter_elts elts ~temporarily_marked ) in iter_elts elements ~temporarily_marked:Keys.empty >>= function | Ok () -> return (Ok (List.rev !res)) | Error elts -> return (Error elts) end [@@inlined always] module Int = Make (Int.Set) (Monad.Id) module String = Make (String.Set) (Monad.Id)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>