package base
Full standard library replacement for OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
v0.15.1.tar.gz
sha256=755e303171ea267e3ba5af7aa8ea27537f3394d97c77d340b10f806d6ef61a14
doc/src/base/or_error.ml.html
Source file or_error.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
open! Import include ( Result : module type of struct include Result end with module Error := Result.Error) type 'a t = ('a, Error.t) Result.t [@@deriving_inline compare, equal, hash, sexp, sexp_grammar] let compare : 'a. ('a -> 'a -> int) -> 'a t -> 'a t -> int = fun _cmp__a a__001_ b__002_ -> Result.compare _cmp__a Error.compare a__001_ b__002_ ;; let equal : 'a. ('a -> 'a -> bool) -> 'a t -> 'a t -> bool = fun _cmp__a a__007_ b__008_ -> Result.equal _cmp__a Error.equal a__007_ b__008_ ;; let hash_fold_t : 'a. (Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state) -> Ppx_hash_lib.Std.Hash.state -> 'a t -> Ppx_hash_lib.Std.Hash.state = fun _hash_fold_a hsv arg -> Result.hash_fold_t _hash_fold_a Error.hash_fold_t hsv arg ;; let t_of_sexp : 'a. (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a t = fun _of_a__013_ x__015_ -> Result.t_of_sexp _of_a__013_ Error.t_of_sexp x__015_ ;; let sexp_of_t : 'a. ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t = fun _of_a__016_ x__017_ -> Result.sexp_of_t _of_a__016_ Error.sexp_of_t x__017_ ;; let (t_sexp_grammar : 'a Sexplib0.Sexp_grammar.t -> 'a t Sexplib0.Sexp_grammar.t) = fun _'a_sexp_grammar -> Result.t_sexp_grammar _'a_sexp_grammar Error.t_sexp_grammar ;; [@@@end] let invariant invariant_a t = match t with | Ok a -> invariant_a a | Error error -> Error.invariant error ;; include Applicative.Make (struct type nonrec 'a t = 'a t let return = return let apply f x = Result.combine f x ~ok:(fun f x -> f x) ~err:(fun e1 e2 -> Error.of_list [ e1; e2 ]) ;; let map = `Custom map end) module Let_syntax = struct let return = return include Monad_infix module Let_syntax = struct let return = return let map = map let bind = bind let both = both (* from Applicative.Make *) module Open_on_rhs = struct end end end let ok = Result.ok let is_ok = Result.is_ok let is_error = Result.is_error let try_with ?(backtrace = false) f = try Ok (f ()) with | exn -> Error (Error.of_exn exn ?backtrace:(if backtrace then Some `Get else None)) ;; let try_with_join ?backtrace f = join (try_with ?backtrace f) let ok_exn = function | Ok x -> x | Error err -> Error.raise err ;; let of_exn ?backtrace exn = Error (Error.of_exn ?backtrace exn) let of_exn_result ?backtrace = function | Ok _ as z -> z | Error exn -> of_exn ?backtrace exn ;; let error ?here ?strict message a sexp_of_a = Error (Error.create ?here ?strict message a sexp_of_a) ;; let error_s sexp = Error (Error.create_s sexp) let error_string message = Error (Error.of_string message) let errorf format = Printf.ksprintf error_string format let tag t ~tag = Result.map_error t ~f:(Error.tag ~tag) let tag_s t ~tag = Result.map_error t ~f:(Error.tag_s ~tag) let tag_s_lazy t ~tag = Result.map_error t ~f:(Error.tag_s_lazy ~tag) let tag_arg t message a sexp_of_a = Result.map_error t ~f:(fun e -> Error.tag_arg e message a sexp_of_a) ;; let unimplemented s = error "unimplemented" s sexp_of_string let combine_errors l = Result.map_error (Result.combine_errors l) ~f:Error.of_list let combine_errors_unit l = Result.map (combine_errors l) ~f:(fun (_ : unit list) -> ()) let filter_ok_at_least_one l = let ok, errs = List.partition_map l ~f:Result.to_either in match ok with | [] -> Error (Error.of_list errs) | _ -> Ok ok ;; let find_ok l = match List.find_map l ~f:Result.ok with | Some x -> Ok x | None -> Error (Error.of_list (List.map l ~f:(function | Ok _ -> assert false | Error err -> err))) ;; let find_map_ok l ~f = With_return.with_return (fun { return } -> Error (Error.of_list (List.map l ~f:(fun elt -> match f elt with | Ok _ as x -> return x | Error err -> err)))) ;; let map = Result.map let iter = Result.iter let iter_error = Result.iter_error
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>