sig
  val default_pool : ThreadPoolExecutor.t
  val shutdown_now : unit -> unit
  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 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 init :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> int -> (int -> 'a) -> 'a array
  val iter :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> unit) -> 'a array -> unit
  val map :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> 'b) -> 'a array -> 'b array
  val iteri :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> (int -> '-> unit) -> 'a array -> unit
  val mapi :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> (int -> '-> 'b) -> 'a array -> 'b array
  val fold_left :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int ->
    ('-> '-> 'a) -> ('-> '-> 'a) -> '-> 'b array -> 'a
  val fold_right :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int ->
    ('-> '-> 'a) -> ('-> '-> 'a) -> 'b array -> '-> 'a
  val sort :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> '-> int) -> 'a array -> unit
  val stable_sort :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> '-> int) -> 'a array -> unit
  val fast_sort :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> '-> int) -> 'a array -> unit
  val mem :
    ?pool:ThreadPoolExecutor.t -> ?chunk_size:int -> '-> 'a array -> bool
  val memq :
    ?pool:ThreadPoolExecutor.t -> ?chunk_size:int -> '-> 'a array -> bool
  val exists :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> bool) -> 'a array -> bool
  val for_all :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> bool) -> 'a array -> bool
  val find :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> bool) -> 'a array -> 'a
  val find_index :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> bool) -> 'a array -> int
  val find_all :
    ?pool:ThreadPoolExecutor.t ->
    ?chunk_size:int -> ('-> bool) -> 'a array -> 'a list
  module type OptionalParameters =
    sig val pool : ThreadPoolExecutor.t val chunk_size : int end
  module type S =
    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) -> ('-> '-> 'a) -> '-> 'b array -> 'a
      val fold_right :
        ('-> '-> 'a) -> ('-> '-> 'a) -> 'b array -> '-> 'a
      val sort : ('-> '-> int) -> 'a array -> unit
      val stable_sort : ('-> '-> int) -> 'a array -> unit
      val fast_sort : ('-> '-> int) -> 'a array -> unit
      val mem : '-> 'a array -> bool
      val memq : '-> 'a array -> bool
      val exists : ('-> bool) -> 'a array -> bool
      val for_all : ('-> bool) -> 'a array -> bool
      val find : ('-> bool) -> 'a array -> 'a
      val find_index : ('-> bool) -> 'a array -> int
      val find_all : ('-> bool) -> 'a array -> 'a list
      external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"
      external unsafe_set : 'a array -> int -> '-> unit
        = "%array_unsafe_set"
    end
  module Make : functor (OP : OptionalParameters-> S
  external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"
  external unsafe_set : 'a array -> int -> '-> unit = "%array_unsafe_set"
end