From df4ce1995436c4f3777baad83aba088967d5ddd4 Mon Sep 17 00:00:00 2001 From: Josh Berdine Date: Thu, 1 Jul 2021 03:30:30 -0700 Subject: [PATCH] [sledge] Add List.foldi Differential Revision: D29441163 fbshipit-source-id: e58b57072 --- sledge/nonstdlib/list.ml | 1 + sledge/nonstdlib/list.mli | 1 + 2 files changed, 2 insertions(+) diff --git a/sledge/nonstdlib/list.ml b/sledge/nonstdlib/list.ml index 30e7378b2..2e86ce033 100644 --- a/sledge/nonstdlib/list.ml +++ b/sledge/nonstdlib/list.ml @@ -57,6 +57,7 @@ let group_join_by ~eq ~hash = group_join_by ~eq ~hash let fold xs init ~f = fold_left ~f:(fun s x -> f x s) ~init xs let fold_left xs init ~f = fold_left ~f ~init xs let fold_right xs init ~f = fold_right ~f ~init xs +let foldi xs init ~f = foldi ~f:(fun s i x -> f i x s) ~init xs let reduce xs ~f = match xs with [] -> None | x :: xs -> Some (fold ~f xs x) diff --git a/sledge/nonstdlib/list.mli b/sledge/nonstdlib/list.mli index 947b2a13e..8ac55c503 100644 --- a/sledge/nonstdlib/list.mli +++ b/sledge/nonstdlib/list.mli @@ -94,6 +94,7 @@ val group_join_by : val fold : 'a list -> 's -> f:('a -> 's -> 's) -> 's val fold_left : 'a list -> 's -> f:('s -> 'a -> 's) -> 's val fold_right : 'a list -> 's -> f:('a -> 's -> 's) -> 's +val foldi : 'a t -> 's -> f:(int -> 'a -> 's -> 's) -> 's val reduce : 'a t -> f:('a -> 'a -> 'a) -> 'a option val fold_diagonal : 'a list -> 's -> f:('a -> 'a -> 's -> 's) -> 's val fold_map : 'a t -> 's -> f:('a -> 's -> 'b * 's) -> 'b t * 's