functor (M : S1->
  functor
    (M : sig
           val length : 'M.container -> int
           val is_empty : 'M.container -> bool
           val iter : 'M.container -> f:('-> unit) -> unit
           val fold : 'M.container -> init:'-> f:('-> '-> 'b) -> 'b
           val exists : 'M.container -> f:('-> bool) -> bool
           val for_all : 'M.container -> f:('-> bool) -> bool
           val find : 'M.container -> f:('-> bool) -> 'a option
           val to_list : 'M.container -> 'a list
           val to_array : 'M.container -> 'a array
         end->
    sig  end