functor (T : T.T1->
  functor (Elt : T.T1->
    functor
      (M : sig
             val mem :
               ?equal:('Elt.t -> 'Elt.t -> bool) ->
               'T.t -> 'Elt.t -> bool
             val length : 'T.t -> int
             val is_empty : 'T.t -> bool
             val iter : 'T.t -> f:('Elt.t -> unit) -> unit
             val fold :
               'T.t ->
               init:'accum -> f:('accum -> 'Elt.t -> 'accum) -> 'accum
             val exists : 'T.t -> f:('Elt.t -> bool) -> bool
             val for_all : 'T.t -> f:('Elt.t -> bool) -> bool
             val count : 'T.t -> f:('Elt.t -> bool) -> int
             val find : 'T.t -> f:('Elt.t -> bool) -> 'Elt.t option
             val find_map : 'T.t -> f:('Elt.t -> 'b option) -> 'b option
             val to_list : 'T.t -> 'Elt.t list
             val to_array : 'T.t -> 'Elt.t array
           end->
      sig  end