sig
  module Array :
    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 -> '-> unit = "%array_safe_set"
      external make : int -> '-> 'a array = "caml_make_vect"
      external make_float : int -> float array = "caml_make_float_vect"
      external create : int -> '-> 'a array = "caml_make_vect"
      val init : int -> (int -> 'a) -> 'a array
      val make_matrix : int -> int -> '-> 'a array array
      val create_matrix : int -> int -> '-> '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 -> '-> 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 : ('-> unit) -> 'a array -> unit
      val map : ('-> 'b) -> 'a array -> 'b array
      val iteri : (int -> '-> unit) -> 'a array -> unit
      val mapi : (int -> '-> 'b) -> 'a array -> 'b array
      val fold_left : ('-> '-> 'a) -> '-> 'b array -> 'a
      val fold_right : ('-> '-> 'a) -> 'b array -> '-> 'a
      val modify : ('-> 'a) -> 'a array -> unit
      val modifyi : (int -> '-> 'a) -> 'a array -> unit
      val fold_lefti : ('-> int -> '-> 'a) -> '-> 'b array -> 'a
      val fold_righti : (int -> '-> '-> 'a) -> 'b array -> '-> 'a
      val reduce : ('-> '-> 'a) -> 'a array -> 'a
      val singleton : '-> 'a array
      val sort : ('-> '-> int) -> 'a array -> unit
      val stable_sort : ('-> '-> int) -> 'a array -> unit
      val fast_sort : ('-> '-> int) -> 'a array -> unit
      val decorate_stable_sort : ('-> 'b) -> 'a array -> 'a array
      val decorate_fast_sort : ('-> 'b) -> 'a array -> 'a array
      val bsearch :
        'BatOrd.ord ->
        'a array ->
        '->
        [ `All_bigger | `All_lower | `At of int | `Empty | `Just_after of int ]
      val iter2 : ('-> '-> unit) -> 'a array -> 'b array -> unit
      val iter2i : (int -> '-> '-> unit) -> 'a array -> 'b array -> unit
      val for_all2 : ('-> '-> bool) -> 'a array -> 'b array -> bool
      val exists2 : ('-> '-> bool) -> 'a array -> 'b array -> bool
      val map2 : ('-> '-> 'c) -> 'a array -> 'b array -> 'c array
      val cartesian_product : 'a array -> 'b array -> ('a * 'b) array
      val for_all : ('-> bool) -> 'a array -> bool
      val exists : ('-> bool) -> 'a array -> bool
      val find : ('-> bool) -> 'a array -> 'a
      val mem : '-> 'a array -> bool
      val memq : '-> 'a array -> bool
      val findi : ('-> bool) -> 'a array -> int
      val filter : ('-> bool) -> 'a array -> 'a array
      val filteri : (int -> '-> bool) -> 'a array -> 'a array
      val filter_map : ('-> 'b option) -> 'a array -> 'b array
      val find_all : ('-> bool) -> 'a array -> 'a array
      val partition : ('-> bool) -> 'a array -> 'a array * 'a array
      val rev : 'a array -> 'a array
      val rev_in_place : 'a array -> unit
      val enum : 'a array -> 'BatEnum.t
      val of_enum : 'BatEnum.t -> 'a array
      val backwards : 'a array -> 'BatEnum.t
      val of_backwards : 'BatEnum.t -> 'a array
      val range : 'a array -> int BatEnum.t
      val insert : 'a array -> '-> int -> 'a array
      val print :
        ?first:string ->
        ?last:string ->
        ?sep:string -> ('a, 'b) BatIO.printer -> ('a t, 'b) BatIO.printer
      val compare : 'BatOrd.comp -> 'a array BatOrd.comp
      val ord : 'BatOrd.ord -> 'a array BatOrd.ord
      val equal : 'BatOrd.eq -> 'a array BatOrd.eq
      module Exceptionless = BatArray.Exceptionless
      module Labels = BatArray.Labels
      module Cap = BatArray.Cap
      module Incubator = BatArray.Incubator
      val is_sorted_by : ('-> 'b) -> 'a array -> bool
      external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"
      external unsafe_set : 'a array -> int -> '-> unit
        = "%array_unsafe_set"
    end
end