sig   type ('a, 'b) t constraint 'b = [< `Read | `Write ]   external length : ('a, [< `Read | `Write ]) BatArray.Cap.t -> int     = "%array_length"   external get :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> int -> 'a     = "%array_safe_get"   external set :     ('a, [< `Read | `Write > `Write ]) BatArray.Cap.t -> int -> 'a -> unit     = "%array_safe_set"   external make : int -> 'a -> ('a, [< `Read | `Write ]) BatArray.Cap.t     = "caml_make_vect"   external create : int -> 'a -> ('a, [< `Read | `Write ]) BatArray.Cap.t     = "caml_make_vect"   external make_float : int -> (float, [< `Read | `Write ]) BatArray.Cap.t     = "caml_make_float_vect"   external of_array : 'a array -> ('a, [< `Read | `Write ]) BatArray.Cap.t     = "%identity"   external to_array : ('a, [ `Read | `Write ]) BatArray.Cap.t -> 'a array     = "%identity"   external read_only :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [ `Read ]) BatArray.Cap.t = "%identity"   external write_only :     ('a, [< `Read | `Write > `Write ]) BatArray.Cap.t ->     ('a, [ `Write ]) BatArray.Cap.t = "%identity"   val init : int -> (int -> 'a) -> ('a, [< `Read | `Write ]) BatArray.Cap.t   val make_matrix :     int ->     int ->     'a ->     (('a, [< `Read | `Write ]) BatArray.Cap.t, [< `Read | `Write ])     BatArray.Cap.t   val create_matrix :     int ->     int ->     'a ->     (('a, [< `Read | `Write ]) BatArray.Cap.t, [< `Read | `Write ])     BatArray.Cap.t   val iter :     ('a -> unit) -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit   val map :     ('a -> 'b) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('b, [< `Read | `Write ]) BatArray.Cap.t   val iteri :     (int -> 'a -> unit) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit   val mapi :     (int -> 'a -> 'b) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('b, [< `Read | `Write ]) BatArray.Cap.t   val modify : ('a -> 'a) -> ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit   val modifyi :     (int -> 'a -> 'a) -> ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit   val fold_left :     ('a -> 'b -> 'a) ->     'a -> ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a   val fold_right :     ('b -> 'a -> 'a) ->     ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a -> 'a   val iter2 :     ('a -> 'b -> unit) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit   val iter2i :     (int -> 'a -> 'b -> unit) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit   val for_all :     ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> bool   val exists :     ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> bool   val find :     ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a   val mem : 'a -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> bool   val memq : 'a -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> bool   val findi :     ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> int   val filter :     ('a -> bool) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [< `Read | `Write ]) BatArray.Cap.t   val filter_map :     ('a -> 'b option) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('b, [< `Read | `Write ]) BatArray.Cap.t   val find_all :     ('a -> bool) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [< `Read | `Write ]) BatArray.Cap.t   val partition :     ('a -> bool) ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [< `Read | `Write ]) BatArray.Cap.t *     ('a, [< `Read | `Write ]) BatArray.Cap.t   val rev :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [< `Read | `Write ]) BatArray.Cap.t   val rev_in_place : ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit   val append :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     ('a, [< `Read | `Write ]) BatArray.Cap.t   val concat :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t list ->     ('a, [< `Read | `Write ]) BatArray.Cap.t   val sub :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     int -> int -> ('a, [< `Read | `Write ]) BatArray.Cap.t   val copy : ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a array   val fill :     ('a, [< `Read | `Write > `Write ]) BatArray.Cap.t ->     int -> int -> 'a -> unit   val blit :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->     int ->     ('a, [< `Read | `Write > `Write ]) BatArray.Cap.t -> int -> int -> unit   val enum : ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a BatEnum.t   val of_enum : 'a BatEnum.t -> ('a, [< `Read | `Write ]) BatArray.Cap.t   val backwards :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a BatEnum.t   val of_backwards : 'a BatEnum.t -> ('a, [< `Read | `Write ]) BatArray.Cap.t   val to_list : ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a list   val of_list : 'a list -> ('a, [< `Read | `Write ]) BatArray.Cap.t   val sort :     ('a -> 'a -> int) -> ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit   val stable_sort :     ('a -> 'a -> int) -> ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit   val fast_sort :     ('a -> 'a -> int) -> ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit   val print :     ?first:string ->     ?last:string ->     ?sep:string ->     ('a BatIO.output -> 'b -> unit) ->     'a BatIO.output ->     ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit   val compare :     'a BatOrd.comp ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t BatOrd.comp   val ord :     'a BatOrd.ord ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t BatOrd.ord   val equal :     'a BatOrd.eq ->     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t BatOrd.eq   module Exceptionless :     sig       val find :         ('a -> bool) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a option       val findi :         ('a -> bool) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> int option     end   module Labels :     sig       val init :         int -> f:(int -> 'a) -> ('a, [< `Read | `Write ]) BatArray.Cap.t       val make : int -> init:'a -> ('a, [< `Read | `Write ]) BatArray.Cap.t       val create : int -> init:'a -> ('a, [< `Read | `Write ]) BatArray.Cap.t       val make_matrix :         dimx:int ->         dimy:int ->         'a ->         (('a, [< `Read | `Write ]) BatArray.Cap.t, [< `Read | `Write ])         BatArray.Cap.t       val create_matrix :         dimx:int ->         dimy:int ->         'a ->         (('a, [< `Read | `Write ]) BatArray.Cap.t, [< `Read | `Write ])         BatArray.Cap.t       val sub :         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         pos:int -> len:int -> ('a, [< `Read | `Write ]) BatArray.Cap.t       val fill :         ('a, [< `Read | `Write > `Write ]) BatArray.Cap.t ->         pos:int -> len:int -> 'a -> unit       val blit :         src:('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         src_pos:int ->         dst:('a, [< `Read | `Write > `Write ]) BatArray.Cap.t ->         dst_pos:int -> len:int -> unit       val iter :         f:('a -> unit) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit       val iteri :         f:(int -> 'a -> unit) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit       val modify :         f:('a -> 'a) -> ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit       val modifyi :         f:(int -> 'a -> 'a) ->         ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit       val fold_left :         f:('a -> 'b -> 'a) ->         init:'a -> ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a       val fold_right :         f:('b -> 'a -> 'a) ->         ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> init:'a -> 'a       val sort :         cmp:('a -> 'a -> int) ->         ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit       val stable_sort :         cmp:('a -> 'a -> int) ->         ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit       val fast_sort :         cmp:('a -> 'a -> int) ->         ('a, [ `Read | `Write ]) BatArray.Cap.t -> unit       val iter2 :         f:('a -> 'b -> unit) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit       val iter2i :         f:(int -> 'a -> 'b -> unit) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         ('b, [< `Read | `Write > `Read ]) BatArray.Cap.t -> unit       val exists :         f:('a -> bool) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> bool       val for_all :         f:('a -> bool) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> bool       val find :         f:('a -> bool) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> 'a       val map :         f:('a -> 'b) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         ('b, [< `Read | `Write ]) BatArray.Cap.t       val mapi :         f:(int -> 'a -> 'b) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         ('b, [< `Read | `Write ]) BatArray.Cap.t       val filter :         f:('a -> bool) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         ('a, [< `Read | `Write ]) BatArray.Cap.t       val filter_map :         f:('a -> 'b option) ->         ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t ->         ('b, [< `Read | `Write ]) BatArray.Cap.t     end   external unsafe_get :     ('a, [< `Read | `Write > `Read ]) BatArray.Cap.t -> int -> 'a     = "%array_unsafe_get"   external unsafe_set :     ('a, [< `Read | `Write > `Write ]) BatArray.Cap.t -> int -> 'a -> unit     = "%array_unsafe_set" end