package merlin-lib
Merlin's libraries
Install
Dune Dependency
Authors
Maintainers
Sources
merlin-5.5-503.tbz
sha256=67da3b34f2fea07678267309f61da4a2c6f08298de0dc59655b8d30fd8269af1
sha512=1fb3b5180d36aa82b82a319e15b743b802b6888f0dc67645baafdb4e18dfc23a7b90064ec9bc42f7424061cf8cde7f8839178d8a8537bf4596759f3ff4891873
doc/src/merlin-lib.ocaml_utils/lazy_backtrack.ml.html
Source file lazy_backtrack.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
type ('a,'b) t = ('a,'b) eval ref and ('a,'b) eval = | Done of 'b | Raise of exn | Thunk of 'a type undo = | Nil | Cons : ('a, 'b) t * 'a * undo -> undo type log = undo ref let force f x = match !x with | Done x -> x | Raise e -> raise e | Thunk e -> match f e with | y -> x := Done y; y | exception e -> x := Raise e; raise e let get_arg x = match !x with Thunk a -> Some a | _ -> None let get_contents x = match !x with | Thunk a -> Either.Left a | Done b -> Either.Right b | Raise e -> raise e let create x = ref (Thunk x) let create_forced y = ref (Done y) let create_failed e = ref (Raise e) let log () = ref Nil let force_logged log f x = match !x with | Done x -> x | Raise e -> raise e | Thunk e -> match f e with | (Error _ as err : _ result) -> x := Done err; log := Cons(x, e, !log); err | Ok _ as res -> x := Done res; res | exception e -> x := Raise e; raise e let backtrack log = let rec loop = function | Nil -> () | Cons(x, e, rest) -> x := Thunk e; loop rest in loop !log (* For compatibility with 4.02 and 4.03 *) let is_val t = match !t with | Done _ -> true | Raise _ | Thunk _ -> false let view t = !t (* For compatibility with 4.08 and 4.09 *) let force_logged_408 log f x = match !x with | Done x -> x | Raise e -> raise e | Thunk e -> match f e with | None -> x := Done None; log := Cons(x, e, !log); None | Some _ as y -> x := Done y; y | exception e -> x := Raise e; raise e
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>