sig
  val init : int -> f:(int -> 'a) -> 'a BatVect.Make.t
  val get : 'a BatVect.Make.t -> n:int -> 'a
  val at : 'a BatVect.Make.t -> n:int -> 'a
  val set : 'a BatVect.Make.t -> n:int -> elem:'a -> 'a BatVect.Make.t
  val modify :
    'a BatVect.Make.t -> n:int -> f:('a -> 'a) -> 'a BatVect.Make.t
  val destructive_set : 'a BatVect.Make.t -> n:int -> elem:'a -> unit
  val sub : 'a BatVect.Make.t -> m:int -> n:int -> 'a BatVect.Make.t
  val insert :
    n:int -> sub:'a BatVect.Make.t -> 'a BatVect.Make.t -> 'a BatVect.Make.t
  val remove : m:int -> n:int -> 'a BatVect.Make.t -> 'a BatVect.Make.t
  val iter : f:('a -> unit) -> 'a BatVect.Make.t -> unit
  val iteri : f:(int -> 'a -> unit) -> 'a BatVect.Make.t -> unit
  val rangeiter :
    f:('a -> unit) -> m:int -> n:int -> 'a BatVect.Make.t -> unit
  val fold_left : f:('b -> 'a -> 'b) -> init:'b -> 'a BatVect.Make.t -> 'b
  val fold : f:('b -> 'a -> 'b) -> init:'b -> 'a BatVect.Make.t -> 'b
  val reduce : f:('a -> 'a -> 'a) -> 'a BatVect.Make.t -> 'a
  val fold_right : f:('a -> 'b -> 'b) -> 'a BatVect.Make.t -> init:'b -> 'b
  val foldi : f:(int -> 'b -> 'a -> 'b) -> init:'b -> 'a BatVect.Make.t -> 'b
  val map : f:('a -> 'b) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
  val mapi : f:(int -> 'a -> 'b) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
  val for_all : f:('a -> bool) -> 'a BatVect.Make.t -> bool
  val exists : f:('a -> bool) -> 'a BatVect.Make.t -> bool
  val find : f:('a -> bool) -> 'a BatVect.Make.t -> 'a
  val mem : elem:'a -> 'a BatVect.Make.t -> bool
  val memq : elem:'a -> 'a BatVect.Make.t -> bool
  val findi : f:('a -> bool) -> 'a BatVect.Make.t -> int
  val filter : f:('a -> bool) -> 'a BatVect.Make.t -> 'a BatVect.Make.t
  val filter_map :
    f:('a -> 'b option) -> 'a BatVect.Make.t -> 'b BatVect.Make.t
  val find_all : f:('a -> bool) -> 'a BatVect.Make.t -> 'a BatVect.Make.t
  val partition :
    f:('a -> bool) ->
    'a BatVect.Make.t -> 'a BatVect.Make.t * 'a BatVect.Make.t
end