sig
  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 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 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 : ('-> '-> 'b) -> 'a array -> '-> 'b
  val sort : ('-> '-> int) -> 'a array -> unit
  val stable_sort : ('-> '-> int) -> 'a array -> unit
  val fast_sort : ('-> '-> int) -> 'a array -> unit
  external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"
  external unsafe_set : 'a array -> int -> '-> unit = "%array_unsafe_set"
  type 'a t = 'a array
  val map_to_list : ('-> 'b) -> 'a array -> 'b list
  val map2_to_list : ('-> '-> 'c) -> 'a array -> 'b array -> 'c list
  val index_opt : ('-> bool) -> 'a array -> int option
  val map_filter : ('-> 'b option) -> 'a array -> 'b array
  val findi_opt : ('-> bool) -> 'a array -> (int * 'a) option
  val eqlen : string -> 'a array -> 'b array -> int
  val map2 : ('-> '-> 'c) -> 'a array -> 'b array -> 'c array
  val mapi2 : (int -> '-> '-> 'c) -> 'a array -> 'b array -> 'c array
  val iter2 : ('-> '-> 'c) -> 'a array -> 'b array -> unit
  val iteri2 : (int -> '-> '-> 'c) -> 'a array -> 'b array -> unit
  val findi_all : ('-> bool) -> 'a array -> (int * 'a) list
  val dump : t:< show : '-> string; .. > -> 'a array -> string
  module Build :
    sig
      type 'a t = 'Cd_Array.Array.Build.t
      val create : unit -> 'a t
      val add : '-> 'a t -> unit
      val get : 'a t -> 'a array
    end
  module BuildSized :
    sig
      type 'a t = 'Cd_Array.Array.BuildSized.t
      val create : size:int -> 'a t
      val add : '-> 'a t -> unit
      val get : 'a t -> 'a array
    end
  val for_all : ('-> bool) -> 'a array -> bool
  module BuildSizedRandAcc :
    sig
      type 'a t = 'Cd_Array.Array.BuildSizedRandAcc.t
      val create : size:int -> 'a t
      val set : 'a t -> int -> '-> unit
      val get : 'a t -> 'a array
    end
  val arrays_fibration :
    ('-> '-> bool) -> 'a array list -> ('a array * int array) list * int
  val merge_maps :
    ?tikey:'Cdt.ti ->
    ?tival:'Cdt.ti ->
    builder:< add : '-> '-> '-> 'c; empty : 'c; result : '-> 'f; .. > ->
    keq:('-> '-> bool) ->
    f:[< `Merge_rwm of '-> 'g list -> 'h list -> 'e list
       | `Merge_rws of '-> 'g option -> 'h option -> 'e option ] ->
    k1:'d array -> v1:'g array -> k2:'d array -> v2:'h array -> unit -> 'f
  val map2to1 : ('-> '-> 'c) -> 'a array -> 'b array -> 'c array
  class ['a] ti :
    ?cmp:('-> '-> Cdt.cmp_res) ->
    ?eq:('-> '-> bool) ->
    ?hash:('-> int) ->
    ?show:('-> string) ->
    '#Cdt.tti ->
    unit ->
    object
      constraint 'a = 'b array
      val v_type_name : Cdt.type_name option ref
      method cmp : '-> '-> Cdt.cmp_res
      method eq : '-> '-> bool
      method get_exn : Cdt.ubox -> 'a
      method hash : '-> int
      method meths : Cdt.R.meth_table
      method polyapp_Ab : 'Cdt.polyapp_Ab -> Cdt.ubox -> 'c
      method put_func : '-> unit -> unit
      method show : '-> string
      method type_desc : Cdt.type_desc
      method type_id : Cdt.Type_id.t
      method type_name : Cdt.type_name
    end
  module GrowingArray :
    sig
      type 'a t = 'Cd_Array.Array.GrowingArray.t
      val make : int -> '-> 'a t
      val request_array : int -> 'a t -> 'a array
    end
  module Functor :
    sig
      type 'a t = 'a array
      val fmap : ('-> 'b) -> 'a array -> 'b array
    end
end