sig
  val foldi : init:'-> 'b array -> f:(int -> '-> '-> 'a) -> 'a
  val random_split :
    ?random_state:Core.Std.Random.State.t ->
    'a array -> p:float -> 'a array * 'a array
  val random_sub :
    ?random_state:Core.Std.Random.State.t -> 'a array -> p:float -> 'a array
  module Access_control :
    sig
      type ('a, +'z) any
      module Immutable :
        sig
          type 'a t =
              ('a, Core.Std.immutable) Extended_array.Access_control.any
          val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
          val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
          val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
          val bin_write_t : ('a, 'a t) Bin_prot.Map_to_safe.writer1
          val bin_write_t_ : ('a, 'a t) Bin_prot.Unsafe_write_c.writer1
          val bin_read_t : ('a, 'a t) Bin_prot.Map_to_safe.reader1
          val bin_read_t_ : ('a, 'a t) Bin_prot.Unsafe_read_c.reader1
          val bin_read_t__ : ('a, int -> 'a t) Bin_prot.Unsafe_read_c.reader1
          val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
          val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
          val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
        end
      module Read_only :
        sig
          type 'a t =
              ('a, Core.Std.read_only) Extended_array.Access_control.any
          val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
          val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
          val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
          val bin_write_t : ('a, 'a t) Bin_prot.Map_to_safe.writer1
          val bin_write_t_ : ('a, 'a t) Bin_prot.Unsafe_write_c.writer1
          val bin_read_t : ('a, 'a t) Bin_prot.Map_to_safe.reader1
          val bin_read_t_ : ('a, 'a t) Bin_prot.Unsafe_read_c.reader1
          val bin_read_t__ : ('a, int -> 'a t) Bin_prot.Unsafe_read_c.reader1
          val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
          val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
          val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
        end
      module Read_write :
        sig
          type 'a t =
              ('a, Core.Std.read_write) Extended_array.Access_control.any
          val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
          val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
          val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
          val bin_write_t : ('a, 'a t) Bin_prot.Map_to_safe.writer1
          val bin_write_t_ : ('a, 'a t) Bin_prot.Unsafe_write_c.writer1
          val bin_read_t : ('a, 'a t) Bin_prot.Map_to_safe.reader1
          val bin_read_t_ : ('a, 'a t) Bin_prot.Unsafe_read_c.reader1
          val bin_read_t__ : ('a, int -> 'a t) Bin_prot.Unsafe_read_c.reader1
          val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
          val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
          val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
        end
      type 'a t = 'Extended_array.Access_control.Immutable.t
      val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
      val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
      val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
      val bin_write_t : ('a, 'a t) Bin_prot.Map_to_safe.writer1
      val bin_write_t_ : ('a, 'a t) Bin_prot.Unsafe_write_c.writer1
      val bin_read_t : ('a, 'a t) Bin_prot.Map_to_safe.reader1
      val bin_read_t_ : ('a, 'a t) Bin_prot.Unsafe_read_c.reader1
      val bin_read_t__ : ('a, int -> 'a t) Bin_prot.Unsafe_read_c.reader1
      val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
      val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
      val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
      val create :
        len:int -> '-> ('a, 'b) Extended_array.Access_control.any
      val init :
        int -> f:(int -> 'a) -> ('a, 'b) Extended_array.Access_control.any
      val of_array :
        'a array -> 'Extended_array.Access_control.Read_write.t
      val of_array_copy :
        'a array -> ('a, 'b) Extended_array.Access_control.any
      val to_array_copy :
        ('a, 'b) Extended_array.Access_control.any -> 'a array
      val get : ('a, 'b) Extended_array.Access_control.any -> int -> 'a
      val set :
        'Extended_array.Access_control.Read_write.t -> int -> '-> unit
      val append :
        ('a, 'b) Extended_array.Access_control.any ->
        ('a, 'c) Extended_array.Access_control.any ->
        ('a, 'd) Extended_array.Access_control.any
      val copy :
        ('a, 'b) Extended_array.Access_control.any ->
        ('a, 'c) Extended_array.Access_control.any
      val map :
        f:('-> 'b) ->
        ('a, 'c) Extended_array.Access_control.any ->
        ('b, 'd) Extended_array.Access_control.any
      val mapi :
        f:(int -> '-> 'b) ->
        ('a, 'c) Extended_array.Access_control.any ->
        ('b, 'd) Extended_array.Access_control.any
      val iteri :
        f:(int -> '-> unit) ->
        ('a, 'b) Extended_array.Access_control.any -> unit
      val filter_opt :
        ('a option, 'b) Extended_array.Access_control.any ->
        ('a, 'c) Extended_array.Access_control.any
      val filter_map :
        ('a, 'c) Extended_array.Access_control.any ->
        f:('-> 'b option) -> ('b, 'd) Extended_array.Access_control.any
      val filter_mapi :
        ('a, 'c) Extended_array.Access_control.any ->
        f:(int -> '-> 'b option) ->
        ('b, 'd) Extended_array.Access_control.any
      val map2_exn :
        ('a, 'd) Extended_array.Access_control.any ->
        ('b, 'e) Extended_array.Access_control.any ->
        f:('-> '-> 'c) -> ('c, 'f) Extended_array.Access_control.any
      val findi :
        ('a, 'b) Extended_array.Access_control.any ->
        f:(int -> '-> bool) -> (int * 'a) option
      val blit :
        src:('a, 'b) Extended_array.Access_control.any ->
        src_pos:int ->
        dst:'Extended_array.Access_control.Read_write.t ->
        dst_pos:int -> len:int -> unit
      val permute :
        ?random_state:Core.Std.Random.State.t ->
        'Extended_array.Access_control.Read_write.t -> unit
      val fill :
        'Extended_array.Access_control.Read_write.t ->
        pos:int -> len:int -> '-> unit
      val of_list : 'a list -> ('a, 'b) Extended_array.Access_control.any
      val mem : ?equal:('-> '-> bool) -> ('a, 'b) any -> '-> bool
      val length : ('a, 'b) any -> int
      val is_empty : ('a, 'b) any -> bool
      val iter : ('a, 'b) any -> f:('-> unit) -> unit
      val fold :
        ('a, 'b) any -> init:'accum -> f:('accum -> '-> 'accum) -> 'accum
      val exists : ('a, 'b) any -> f:('-> bool) -> bool
      val for_all : ('a, 'b) any -> f:('-> bool) -> bool
      val count : ('a, 'b) any -> f:('-> bool) -> int
      val find : ('a, 'b) any -> f:('-> bool) -> 'a option
      val find_map : ('a, 'c) any -> f:('-> 'b option) -> 'b option
      val to_list : ('a, 'b) any -> 'a list
      val to_array : ('a, 'b) any -> 'a array
      val bin_any :
        'Core.Std.Bin_prot.Type_class.t ->
        'Core.Std.Bin_prot.Type_class.t ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Type_class.t
      val bin_read_any :
        'Core.Std.Bin_prot.Unsafe_read_c.reader ->
        'Core.Std.Bin_prot.Unsafe_read_c.reader ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Read_ml.reader
      val bin_read_any_ :
        'Core.Std.Bin_prot.Unsafe_read_c.reader ->
        'Core.Std.Bin_prot.Unsafe_read_c.reader ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_any__ :
        'Core.Std.Bin_prot.Unsafe_read_c.reader ->
        'Core.Std.Bin_prot.Unsafe_read_c.reader ->
        (int -> ('a, 'z) Extended_array.Access_control.any)
        Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_any :
        'Core.Std.Bin_prot.Type_class.reader ->
        'Core.Std.Bin_prot.Type_class.reader ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Type_class.reader
      val bin_size_any :
        'Core.Std.Bin_prot.Size.sizer ->
        'Core.Std.Bin_prot.Size.sizer ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Size.sizer
      val bin_write_any :
        'Core.Std.Bin_prot.Unsafe_write_c.writer ->
        'Core.Std.Bin_prot.Unsafe_write_c.writer ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Write_ml.writer
      val bin_write_any_ :
        'Core.Std.Bin_prot.Unsafe_write_c.writer ->
        'Core.Std.Bin_prot.Unsafe_write_c.writer ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_any :
        'Core.Std.Bin_prot.Type_class.writer ->
        'Core.Std.Bin_prot.Type_class.writer ->
        ('a, 'z) Extended_array.Access_control.any
        Core.Std.Bin_prot.Type_class.writer
      val any_of_sexp :
        (Sexplib.Sexp.t -> 'a) ->
        (Sexplib.Sexp.t -> 'z) ->
        Sexplib.Sexp.t -> ('a, 'z) Extended_array.Access_control.any
      val sexp_of_any :
        ('-> Sexplib.Sexp.t) ->
        ('-> Sexplib.Sexp.t) ->
        ('a, 'z) Extended_array.Access_control.any -> Sexplib.Sexp.t
    end
  val ounit_tests : unit -> OUnit.test
end