23 lines
492 B
OCaml
23 lines
492 B
OCaml
|
|
let ( let* ) = Lwt.bind
|
||
|
|
let ( let+ ) x f = Lwt.map f x
|
||
|
|
let ( let*? ) = Lwt_result.bind
|
||
|
|
let ( let+? ) x f = Lwt_result.map f x
|
||
|
|
|
||
|
|
let list_get_ok l =
|
||
|
|
let err = ref None in
|
||
|
|
try
|
||
|
|
Ok
|
||
|
|
(List.map
|
||
|
|
(function
|
||
|
|
| Error _e as e ->
|
||
|
|
err := Some e;
|
||
|
|
raise Exit
|
||
|
|
| Ok v -> v)
|
||
|
|
l)
|
||
|
|
with Exit -> ( match !err with None -> assert false | Some v -> v)
|
||
|
|
|
||
|
|
let lwt_list_get_ok l =
|
||
|
|
let open Lwt.Syntax in
|
||
|
|
let+ l = l in
|
||
|
|
list_get_ok l
|