functor
  (IntVecV : sig
               type t
               type elt = int
               val make : ?size:int -> unit -> t
               val set : t -> int -> elt -> unit
               val get : t -> int -> elt
               val clear : t -> unit
               val index_max : t -> int
               val length : t -> int
               val capacity : t -> int
               val blit : t -> int -> t -> int -> int -> unit
               val default : unit -> elt
             end) (Int32VecE : sig
                                 type t
                                 type elt = int32
                                 val make : ?size:int -> unit -> t
                                 val set : t -> int -> elt -> unit
                                 val get : t -> int -> elt
                                 val clear : t -> unit
                                 val index_max : t -> int
                                 val length : t -> int
                                 val capacity : t -> int
                                 val blit :
                                   t -> int -> t -> int -> int -> unit
                                 val default : unit -> elt
                               end->
  S