From a31b3071fd5cdb13f6a21eb8273a074bb7b8dd10 Mon Sep 17 00:00:00 2001 From: swrup Date: Mon, 23 Feb 2026 11:45:27 +0100 Subject: [PATCH] --- src/syntax.ml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/syntax.ml b/src/syntax.ml index 426d9ac0..f0585100 100644 --- a/src/syntax.ml +++ b/src/syntax.ml @@ -7,8 +7,6 @@ let unwrap_err_msg o = match o with Error (`Msg e) -> Error e | Ok v -> Ok v let unwrap_err_caqti o = match o with Error err -> Fmt.error "%a" Caqti_error.pp err | Ok v -> Ok v -(* TODO list_filter_map *) - let list_iter f l = let err = ref None in try @@ -37,6 +35,20 @@ let list_map f l = l) with Exit -> ( match !err with None -> assert false | Some v -> v) +let list_filter_map f l = + let err = ref None in + try + Ok + (List.filter_map + (fun v -> + match f v with + | 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 list_fold_left f acc l = List.fold_left (fun acc v ->