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 : 'BatVect.Make.t
      val singleton : '-> 'BatVect.Make.t
      val of_container : 'R.t -> 'BatVect.Make.t
      val to_container : 'BatVect.Make.t -> 'R.t
      val of_array : 'a array -> 'BatVect.Make.t
      val to_array : 'BatVect.Make.t -> 'a array
      val to_list : 'BatVect.Make.t -> 'a list
      val of_list : 'a list -> 'BatVect.Make.t
      val make : int -> '-> 'BatVect.Make.t
      val init : int -> (int -> 'a) -> 'BatVect.Make.t
      val is_empty : 'BatVect.Make.t -> bool
      val height : 'BatVect.Make.t -> int
      val length : 'BatVect.Make.t -> int
      val balance : 'BatVect.Make.t -> 'BatVect.Make.t
      val concat :
        'BatVect.Make.t -> 'BatVect.Make.t -> 'BatVect.Make.t
      val append : '-> 'BatVect.Make.t -> 'BatVect.Make.t
      val prepend : '-> 'BatVect.Make.t -> 'BatVect.Make.t
      val get : 'BatVect.Make.t -> int -> 'a
      val at : 'BatVect.Make.t -> int -> 'a
      val set : 'BatVect.Make.t -> int -> '-> 'BatVect.Make.t
      val modify :
        'BatVect.Make.t -> int -> ('-> 'a) -> 'BatVect.Make.t
      val destructive_set : 'BatVect.Make.t -> int -> '-> unit
      val sub : 'BatVect.Make.t -> int -> int -> 'BatVect.Make.t
      val insert :
        int -> 'BatVect.Make.t -> 'BatVect.Make.t -> 'BatVect.Make.t
      val remove : int -> int -> 'BatVect.Make.t -> 'BatVect.Make.t
      val enum : 'BatVect.Make.t -> 'BatEnum.t
      val of_enum : 'BatEnum.t -> 'BatVect.Make.t
      val backwards : 'BatVect.Make.t -> 'BatEnum.t
      val of_backwards : 'BatEnum.t -> 'BatVect.Make.t
      val iter : ('-> unit) -> 'BatVect.Make.t -> unit
      val iteri : (int -> '-> unit) -> 'BatVect.Make.t -> unit
      val rangeiter : ('-> unit) -> int -> int -> 'BatVect.Make.t -> unit
      val fold_left : ('-> '-> 'b) -> '-> 'BatVect.Make.t -> 'b
      val fold : ('-> '-> 'b) -> '-> 'BatVect.Make.t -> 'b
      val reduce : ('-> '-> 'a) -> 'BatVect.Make.t -> 'a
      val fold_right : ('-> '-> 'b) -> 'BatVect.Make.t -> '-> 'b
      val foldi : (int -> '-> '-> 'b) -> '-> 'BatVect.Make.t -> 'b
      val map : ('-> 'b) -> 'BatVect.Make.t -> 'BatVect.Make.t
      val mapi : (int -> '-> 'b) -> 'BatVect.Make.t -> 'BatVect.Make.t
      val for_all : ('-> bool) -> 'BatVect.Make.t -> bool
      val exists : ('-> bool) -> 'BatVect.Make.t -> bool
      val find : ('-> bool) -> 'BatVect.Make.t -> 'a
      val mem : '-> 'BatVect.Make.t -> bool
      val memq : '-> 'BatVect.Make.t -> bool
      val findi : ('-> bool) -> 'BatVect.Make.t -> int
      val filter : ('-> bool) -> 'BatVect.Make.t -> 'BatVect.Make.t
      val filter_map :
        ('-> 'b option) -> 'BatVect.Make.t -> 'BatVect.Make.t
      val find_all : ('-> bool) -> 'BatVect.Make.t -> 'BatVect.Make.t
      val partition :
        ('-> bool) ->
        'BatVect.Make.t -> 'BatVect.Make.t * 'BatVect.Make.t
      val first : 'BatVect.Make.t -> 'a
      val last : 'BatVect.Make.t -> 'a
      val shift : 'BatVect.Make.t -> 'a * 'BatVect.Make.t
      val pop : 'BatVect.Make.t -> 'a * 'BatVect.Make.t
      val print :
        ?first:string ->
        ?last:string ->
        ?sep:string ->
        ('BatInnerIO.output -> '-> unit) ->
        'BatInnerIO.output -> 'BatVect.Make.t -> unit
      val invariants : 'BatVect.Make.t -> unit
    end