sig   type 'a t = 'a array   type 'a enumerable = 'a t   type 'a mappable = 'a t   external length : 'a array -> int = "%array_length"   external get : 'a array -> int -> 'a = "%array_safe_get"   external set : 'a array -> int -> 'a -> unit = "%array_safe_set"   external make : int -> 'a -> 'a array = "caml_make_vect"   external create_float : int -> float array = "caml_make_float_vect"   val make_float : int -> float array   external create : int -> 'a -> 'a array = "caml_make_vect"   val init : int -> (int -> 'a) -> 'a array   val make_matrix : int -> int -> 'a -> 'a array array   val create_matrix : int -> int -> 'a -> 'a array array   val append : 'a array -> 'a array -> 'a array   val concat : 'a array list -> 'a array   val sub : 'a array -> int -> int -> 'a array   val copy : 'a array -> 'a array   val fill : 'a array -> int -> int -> 'a -> unit   val blit : 'a array -> int -> 'a array -> int -> int -> unit   val to_list : 'a array -> 'a list   val of_list : 'a list -> 'a array   val max : 'a array -> 'a   val min : 'a array -> 'a   val sum : int array -> int   val fsum : float array -> float   val kahan_sum : float array -> float   val avg : int array -> float   val favg : float array -> float   val left : 'a array -> int -> 'a array   val right : 'a array -> int -> 'a array   val head : 'a array -> int -> 'a array   val tail : 'a array -> int -> 'a array   val iter : ('a -> unit) -> 'a array -> unit   val map : ('a -> 'b) -> 'a array -> 'b array   val iteri : (int -> 'a -> unit) -> 'a array -> unit   val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array   val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a   val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a   val modify : ('a -> 'a) -> 'a array -> unit   val modifyi : (int -> 'a -> 'a) -> 'a array -> unit   val fold_lefti : ('a -> int -> 'b -> 'a) -> 'a -> 'b array -> 'a   val fold_righti : (int -> 'b -> 'a -> 'a) -> 'b array -> 'a -> 'a   val reduce : ('a -> 'a -> 'a) -> 'a array -> 'a   val singleton : 'a -> 'a array   val sort : ('a -> 'a -> int) -> 'a array -> unit   val stable_sort : ('a -> 'a -> int) -> 'a array -> unit   val fast_sort : ('a -> 'a -> int) -> 'a array -> unit   val decorate_stable_sort : ('a -> 'b) -> 'a array -> 'a array   val decorate_fast_sort : ('a -> 'b) -> 'a array -> 'a array   val bsearch :     'a BatOrd.ord ->     'a array ->     'a ->     [ `All_bigger | `All_lower | `At of int | `Empty | `Just_after of int ]   val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit   val iter2i : (int -> 'a -> 'b -> unit) -> 'a array -> 'b array -> unit   val for_all2 : ('a -> 'b -> bool) -> 'a array -> 'b array -> bool   val exists2 : ('a -> 'b -> bool) -> 'a array -> 'b array -> bool   val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array   val cartesian_product : 'a array -> 'b array -> ('a * 'b) array   val for_all : ('a -> bool) -> 'a array -> bool   val exists : ('a -> bool) -> 'a array -> bool   val find : ('a -> bool) -> 'a array -> 'a   val mem : 'a -> 'a array -> bool   val memq : 'a -> 'a array -> bool   val findi : ('a -> bool) -> 'a array -> int   val filter : ('a -> bool) -> 'a array -> 'a array   val filteri : (int -> 'a -> bool) -> 'a array -> 'a array   val filter_map : ('a -> 'b option) -> 'a array -> 'b array   val find_all : ('a -> bool) -> 'a array -> 'a array   val partition : ('a -> bool) -> 'a array -> 'a array * 'a array   val rev : 'a array -> 'a array   val rev_in_place : 'a array -> unit   val enum : 'a array -> 'a BatEnum.t   val of_enum : 'a BatEnum.t -> 'a array   val backwards : 'a array -> 'a BatEnum.t   val of_backwards : 'a BatEnum.t -> 'a array   val range : 'a array -> int BatEnum.t   val insert : 'a array -> 'a -> int -> 'a array   val print :     ?first:string ->     ?last:string ->     ?sep:string ->     ('a, 'b) BatIO.printer -> ('a BatArray.t, 'b) BatIO.printer   val compare : 'a BatOrd.comp -> 'a array BatOrd.comp   val ord : 'a BatOrd.ord -> 'a array BatOrd.ord   val equal : 'a BatOrd.eq -> 'a array BatOrd.eq   module Exceptionless :     sig       val find : ('a -> bool) -> 'a BatArray.t -> 'a option       val findi : ('a -> bool) -> 'a BatArray.t -> int option     end   module Labels :     sig       val init : int -> f:(int -> 'a) -> 'a array       val create : int -> init:'a -> 'a array       val make_matrix : dimx:int -> dimy:int -> 'a -> 'a array array       val create_matrix : dimx:int -> dimy:int -> 'a -> 'a array array       val sub : 'a array -> pos:int -> len:int -> 'a array       val fill : 'a array -> pos:int -> len:int -> 'a -> unit       val blit :         src:'a array ->         src_pos:int -> dst:'a array -> dst_pos:int -> len:int -> unit       val iter : f:('a -> unit) -> 'a array -> unit       val iteri : f:(int -> 'a -> unit) -> 'a array -> unit       val modify : f:('a -> 'a) -> 'a array -> unit       val modifyi : f:(int -> 'a -> 'a) -> 'a array -> unit       val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b array -> 'a       val fold_right : f:('b -> 'a -> 'a) -> 'b array -> init:'a -> 'a       val sort : cmp:('a -> 'a -> int) -> 'a array -> unit       val stable_sort : cmp:('a -> 'a -> int) -> 'a array -> unit       val fast_sort : cmp:('a -> 'a -> int) -> 'a array -> unit       val iter2 :         f:('a -> 'b -> unit) -> 'a BatArray.t -> 'b BatArray.t -> unit       val exists : f:('a -> bool) -> 'a BatArray.t -> bool       val for_all : f:('a -> bool) -> 'a BatArray.t -> bool       val iter2i :         f:(int -> 'a -> 'b -> unit) -> 'a BatArray.t -> 'b BatArray.t -> unit       val find : f:('a -> bool) -> 'a BatArray.t -> 'a       val findi : f:('a -> bool) -> 'a BatArray.t -> int       val map : f:('a -> 'b) -> 'a BatArray.t -> 'b BatArray.t       val mapi : f:(int -> 'a -> 'b) -> 'a BatArray.t -> 'b BatArray.t       val filter : f:('a -> bool) -> 'a BatArray.t -> 'a BatArray.t       val filter_map : f:('a -> 'b option) -> 'a BatArray.t -> 'b BatArray.t       module LExceptionless :         sig           val find : f:('a -> bool) -> 'a BatArray.t -> 'a option           val findi : f:('a -> bool) -> 'a BatArray.t -> int option         end     end   module Cap :     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   module Incubator :     sig       module Eq :         functor (T : BatOrd.Eq) ->           sig type t = T.t array val eq : T.t array BatOrd.eq end       module Ord :         functor (T : BatOrd.Ord) ->           sig type t = T.t array val ord : T.t array BatOrd.ord end     end   val is_sorted_by : ('a -> 'b) -> 'a array -> bool   external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"   external unsafe_set : 'a array -> int -> 'a -> unit = "%array_unsafe_set" end