functor (A : ArrayType->
  sig
    module V :
      sig
        type t = OfArray(A).t
        type elt = A.elt
        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
    type t = { mutable v : Vector.StackOfArray.V.t; mutable back : int; }
    type elt = Vector.StackOfArray.V.elt
    val create : ?size:int -> unit -> Vector.StackOfArray.t
    val is_empty : Vector.StackOfArray.t -> bool
    val clear : Vector.StackOfArray.t -> unit
    val add : Vector.StackOfArray.t -> Vector.StackOfArray.V.elt -> unit
    val push : Vector.StackOfArray.t -> Vector.StackOfArray.V.elt -> unit
    val peek : Vector.StackOfArray.t -> Vector.StackOfArray.V.elt
    val pop : Vector.StackOfArray.t -> Vector.StackOfArray.V.elt
    val size : Vector.StackOfArray.t -> int
  end