sig
val map2i : (int -> 'a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val fold_righti :
(int -> 'elt -> 'acc -> 'acc) -> 'elt list -> 'acc -> 'acc
val fold_lefti : (int -> 'acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc
val fold_left2i :
(int -> 'acc -> 'b -> 'c -> 'acc) -> 'acc -> 'b list -> 'c list -> 'acc
val fold_left3 :
('acc -> 't1 -> 't2 -> 't3 -> 'acc) ->
'acc -> 't1 list -> 't2 list -> 't3 list -> 'acc
val reduce : ('a -> 'a -> 'a) -> 'a list -> 'a
val iter2i : (int -> 'a -> 'b -> unit) -> 'a list -> 'b list -> unit
val iter3 :
('a -> 'b -> 'c -> unit) -> 'a list -> 'b list -> 'c list -> unit
val combine3 : 'a list -> 'b list -> 'c list -> ('a * 'b * 'c) list
val split3 : ('a * 'b * 'c) list -> 'a list * 'b list * 'c list
val make : int -> (int -> 'a) -> 'a list
val last : 'a list -> 'a
val ignore_map : ('a -> 'b) -> 'a list -> unit
val check_for_duplicates : ('a -> 'a -> int) -> 'a list -> ('a * 'a) option
val exit_if_duplicates :
('b -> 'b -> int) -> ('a -> 'b) -> 'a list -> ('a -> 'a list) -> 'a list
val max : int list -> int
val filter_some : 'a option list -> 'a list
val map_some : ('a -> 'b option) -> 'a list -> 'b list
val nth_opt : 'a list -> int -> 'a option
val index : ('a -> bool) -> 'a list -> int
val take : ('a -> 'b option) -> 'a list -> ('a list * ('a * 'b)) option
val take_bool : ('a -> bool) -> 'a list -> ('a list * 'a) option
val find_opt : ('a -> 'b option) -> 'a list -> 'b option
val find_opti : (int -> 'a -> 'b option) -> 'a list -> 'b option
val flatten_map : ('a -> 'b list) -> 'a list -> 'b list
val split_map : ('a -> 'b * 'c) -> 'a list -> 'b list * 'c list
val cut : int -> 'a list -> 'a list
val equal : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val cps_map : ('a -> ('b -> 'c) -> 'c) -> 'a list -> ('b list -> 'c) -> 'c
val map : ('a -> 'a) -> 'a list -> 'a list
end