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