sig
  val rev_filter : ('-> bool) -> 'a list -> 'a list
  val rev_map_fold_left :
    ('acc -> '-> 'acc * 'b) -> 'acc -> 'a list -> 'acc * 'b list
  val map_fold_left :
    ('acc -> '-> 'acc * 'b) -> 'acc -> 'a list -> 'acc * 'b list
  val map_fold_right :
    ('-> 'acc -> 'b * 'acc) -> 'a list -> 'acc -> 'b list * 'acc
  val equal : ('-> '-> bool) -> 'a list -> 'b list -> bool
  val compare : ('-> '-> int) -> 'a list -> 'a list -> int
  val cons : ('-> 'b) -> 'b list -> '-> 'b list
  val map_join_left : ('-> 'b) -> ('-> '-> 'b) -> 'a list -> 'b
  val apply : ('-> 'b list) -> 'a list -> 'b list
  val fold_product : ('-> '-> '-> 'a) -> '-> 'b list -> 'c list -> 'a
  val fold_product_l : ('-> 'b list -> 'a) -> '-> 'b list list -> 'a
  val flatten_rev : 'a list list -> 'a list
  val part : ('-> '-> int) -> 'a list -> 'a list list
  val first : ('-> 'b option) -> 'a list -> 'b
  val find_nth : ('-> bool) -> 'a list -> int
  val drop_while : ('-> bool) -> 'a list -> 'a list
  val first_nth : ('-> 'b option) -> 'a list -> int * 'b
  val fold_lefti : ('-> int -> '-> 'a) -> '-> 'b list -> 'a
  val prefix : int -> 'a list -> 'a list
  val chop : int -> 'a list -> 'a list
  val chop_last : 'a list -> 'a list * 'a
  val split : int -> 'a list -> 'a list * 'a list
  val init : int -> (int -> 'a) -> 'a list
end