functor
  (Container : sig
                 type 'a t
                 val mem : ?equal:('-> '-> bool) -> 'a t -> '-> bool
                 val length : 'a t -> int
                 val is_empty : 'a t -> bool
                 val iter : 'a t -> f:('-> unit) -> unit
                 val fold :
                   'a t ->
                   init:'accum -> f:('accum -> '-> 'accum) -> 'accum
                 val exists : 'a t -> f:('-> bool) -> bool
                 val for_all : 'a t -> f:('-> bool) -> bool
                 val count : 'a t -> f:('-> bool) -> int
                 val find : 'a t -> f:('-> bool) -> 'a option
                 val find_map : 'a t -> f:('-> 'b option) -> 'b option
                 val to_list : 'a t -> 'a list
                 val to_array : 'a t -> 'a array
                 val of_list : 'a list -> 'a t
                 val t_of_sexp :
                   (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
                 val sexp_of_t :
                   ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
               end->
  sig
    val mem : ?equal:('-> '-> bool) -> 'Container.t -> '-> bool
    val length : 'Container.t -> int
    val is_empty : 'Container.t -> bool
    val iter : 'Container.t -> f:('-> unit) -> unit
    val fold :
      'Container.t -> init:'accum -> f:('accum -> '-> 'accum) -> 'accum
    val exists : 'Container.t -> f:('-> bool) -> bool
    val for_all : 'Container.t -> f:('-> bool) -> bool
    val count : 'Container.t -> f:('-> bool) -> int
    val find : 'Container.t -> f:('-> bool) -> 'a option
    val find_map : 'Container.t -> f:('-> 'b option) -> 'b option
    val to_list : 'Container.t -> 'a list
    val to_array : 'Container.t -> 'a array
    val t_of_sexp :
      (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'Container.t
    val sexp_of_t :
      ('-> Sexplib.Sexp.t) -> 'Container.t -> Sexplib.Sexp.t
  end