functor (R : RANDOMACCESS) ->
  functor (PARAM : sig val max_height : int val leaf_size : int end) ->
    sig
      type 'a t
      exception Out_of_bounds
      val max_length : int
      val empty : 'a BatVect.Make.t
      val singleton : 'a -> 'a BatVect.Make.t
      val of_container : 'a R.t -> 'a BatVect.Make.t
      val to_container : 'a BatVect.Make.t -> 'a R.t
      val to_list : 'a BatVect.Make.t -> 'a list
      val make : int -> 'a -> 'a BatVect.Make.t
      val is_empty : 'a BatVect.Make.t -> bool
      val height : 'a BatVect.Make.t -> int
      val length : 'a BatVect.Make.t -> int
      val balance : 'a BatVect.Make.t -> 'a BatVect.Make.t
      val concat :
        'a BatVect.Make.t -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val append : 'a -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val prepend : 'a -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val get : int -> 'a BatVect.Make.t -> 'a
      val set : 'a BatVect.Make.t -> int -> 'a -> 'a BatVect.Make.t
      val sub : int -> int -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val insert :
        int -> 'a BatVect.Make.t -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val remove : int -> int -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val iter : ('a -> unit) -> 'a BatVect.Make.t -> unit
      val iteri : (int -> 'a -> unit) -> 'a BatVect.Make.t -> unit
      val rangeiter : ('a -> unit) -> int -> int -> 'a BatVect.Make.t -> unit
      val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b BatVect.Make.t -> 'a
      val fold : ('a -> 'b -> 'a) -> 'a -> 'b BatVect.Make.t -> 'a
      val fold_right : ('a -> 'b -> 'b) -> 'a BatVect.Make.t -> 'b -> 'b
      val map : ('a -> 'b) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
      val mapi : (int -> 'a -> 'b) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
      val filter : ('a -> bool) -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val filter_map :
        ('a -> 'b option) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
      val find_all : ('a -> bool) -> 'a BatVect.Make.t -> 'a BatVect.Make.t
      val partition :
        ('a -> bool) ->
        'a BatVect.Make.t -> 'a BatVect.Make.t * 'a BatVect.Make.t
      val print :
        ?first:string ->
        ?last:string ->
        ?sep:string ->
        ('a BatInnerIO.output -> 'b -> unit) ->
        'a BatInnerIO.output -> 'b BatVect.Make.t -> unit
    end