functor (T : Make_arg) ->
  sig
    val mem : ?equal:('a -> 'a -> bool) -> 'a T.t -> 'a -> bool
    val length : 'a T.t -> int
    val is_empty : 'a T.t -> bool
    val iter : 'a T.t -> f:('a -> unit) -> unit
    val fold : 'a T.t -> init:'accum -> f:('accum -> 'a -> 'accum) -> 'accum
    val exists : 'a T.t -> f:('a -> bool) -> bool
    val for_all : 'a T.t -> f:('a -> bool) -> bool
    val count : 'a T.t -> f:('a -> bool) -> int
    val sum :
      (module Commutative_group.S with type t = 'sum) ->
      'a T.t -> f:('a -> 'sum) -> 'sum
    val find : 'a T.t -> f:('a -> bool) -> 'a option
    val find_map : 'a T.t -> f:('a -> 'b option) -> 'b option
    val to_list : 'a T.t -> 'a list
    val to_array : 'a T.t -> 'a array
    val min_elt : 'a T.t -> cmp:('a -> 'a -> int) -> 'a option
    val max_elt : 'a T.t -> cmp:('a -> 'a -> int) -> 'a option
  end