sig
  val length : 'a list -> int
  val rev : 'a list -> 'a list
  val rev_append : 'a list -> 'a list -> 'a list
  val concat : 'a list list -> 'a list
  val flatten : 'a list list -> 'a list
  val rev_map : f:('-> 'b) -> 'a list -> 'b list
  val iter2 : f:('-> '-> unit) -> 'a list -> 'b list -> unit
  val map2 : f:('-> '-> 'c) -> 'a list -> 'b list -> 'c list
  val rev_map2 : f:('-> '-> 'c) -> 'a list -> 'b list -> 'c list
  val fold_left2 :
    f:('-> '-> '-> 'a) -> init:'-> 'b list -> 'c list -> 'a
  val fold_right2 :
    f:('-> '-> '-> 'c) -> 'a list -> 'b list -> init:'-> 'c
  val for_all2 : f:('-> '-> bool) -> 'a list -> 'b list -> bool
  val exists2 : f:('-> '-> bool) -> 'a list -> 'b list -> bool
  val mem : '-> set:'a list -> bool
  val memq : '-> set:'a list -> bool
  val find_all : f:('-> bool) -> 'a list -> 'a list
  val partition : f:('-> bool) -> 'a list -> 'a list * 'a list
  val assoc : '-> ('a * 'b) list -> 'b
  val assq : '-> ('a * 'b) list -> 'b
  val mem_assoc : '-> map:('a * 'b) list -> bool
  val mem_assq : '-> map:('a * 'b) list -> bool
  val remove_assoc : '-> ('a * 'b) list -> ('a * 'b) list
  val remove_assq : '-> ('a * 'b) list -> ('a * 'b) list
  val split : ('a * 'b) list -> 'a list * 'b list
  val combine : 'a list -> 'b list -> ('a * 'b) list
  val sort : cmp:('-> '-> int) -> 'a list -> 'a list
  val stable_sort : cmp:('-> '-> int) -> 'a list -> 'a list
  val fast_sort : cmp:('-> '-> int) -> 'a list -> 'a list
  val hd_exn : 'a list -> 'a
  val hd : 'a list -> 'a option
  val tl_exn : 'a list -> 'a list
  val tl : 'a list -> 'a list option
  val nth : 'a list -> int -> 'a option
  val nth_exn : 'a list -> int -> 'a
  val rev_filter : 'a list -> f:('-> bool) -> 'a list
  val filter : 'a list -> f:('-> bool) -> 'a list
  val find_map : 'a list -> f:('-> 'b option) -> 'b option
  val find : 'a list -> f:('-> bool) -> 'a option
  val find_exn : 'a list -> f:('-> bool) -> 'a
  val findi : 'a list -> f:(int -> '-> bool) -> (int * 'a) option
  val exists : 'a list -> f:('-> bool) -> bool
  val for_all : 'a list -> f:('-> bool) -> bool
  val iter : 'a list -> f:('-> unit) -> unit
  val fold : 'a list -> init:'-> f:('-> '-> 'b) -> 'b
  val fold_left : 'a list -> init:'-> f:('-> '-> 'b) -> 'b
  val to_array : 'a list -> 'a array
  val to_list : '-> 'a
  val slow_append : 'a list -> 'a list -> 'a list
  val count_append : 'a list -> 'a list -> int -> 'a list
  val append : 'a list -> 'a list -> 'a list
  val map_slow : 'a list -> f:('-> 'b) -> 'b list
  val count_map : f:('-> 'b) -> 'a list -> int -> 'b list
  val map : 'a list -> f:('-> 'b) -> 'b list
  val fold_right : 'a list -> f:('-> '-> 'b) -> init:'-> 'b
  val rev_mapi : 'a list -> f:(int -> '-> 'b) -> i:int -> 'b list
  val count_mapi : f:(int -> '-> 'b) -> 'a list -> int -> 'b list
  val mapi : 'a list -> f:(int -> '-> 'b) -> 'b list
  val map2_slow : 'a list -> 'b list -> f:('-> '-> 'c) -> 'c list
  val count_map2_exn :
    f:('-> '-> 'c) -> 'a list -> 'b list -> int -> 'c list
  val map2_exn : 'a list -> 'b list -> f:('-> '-> 'c) -> 'c list
  val iteri : 'a list -> f:(int -> '-> unit) -> unit
  val foldi : 'a list -> f:(int -> '-> '-> 'b) -> init:'-> 'b
  val filteri : 'a list -> f:(int -> '-> bool) -> 'a list
  val reduce : 'a list -> f:('-> '-> 'a) -> 'a option
  val concat_map : 'a list -> f:('-> 'b list) -> 'b list
  val concat_mapi : 'a list -> f:(int -> '-> 'b list) -> 'b list
  val merge : 'a list -> 'a list -> cmp:('-> '-> int) -> 'a list
  val last : 'a list -> 'a option
  val remove_consecutive_duplicates :
    'a list -> equal:('-> '-> bool) -> 'a list
  val dedup : ?compare:('-> '-> int) -> 'a list -> 'a list
  val contains_dup : ?compare:('-> '-> int) -> 'a list -> bool
  val find_a_dup : ?compare:('-> '-> int) -> 'a list -> 'a option
  val init : int -> f:(int -> 'a) -> 'a list
  val rev_filter_map : 'a list -> f:('-> 'b option) -> 'b list
  val filter_map : 'a list -> f:('-> 'b option) -> 'b list
  val filter_opt : 'a option list -> 'a list
  val partition_map :
    'a list -> f:('-> [< `Fst of '| `Snd of 'c ]) -> 'b list * 'c list
  val split_n : 'a list -> int -> 'a list * 'a list
  val take : 'a list -> int -> 'a list
  val drop : 'a list -> int -> 'a list
  val split_while : 'a list -> f:('-> bool) -> 'a list * 'a list
  val take_while : 'a list -> f:('-> bool) -> 'a list
  val drop_while : 'a list -> f:('-> bool) -> 'a list
end