    sig
      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 = "make_vect"
      external create : int -> 'a -> 'a array = "make_vect"
      val init : int -> f:(int -> '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 append : 'a array -> 'a array -> 'a array
      val concat : 'a array list -> 'a array
      val sub : 'a array -> pos:int -> len:int -> 'a array
      val copy : 'a array -> '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 to_list : 'a array -> 'a list
      val of_list : 'a list -> 'a array
      val iter : f:('a -> unit) -> 'a array -> unit
      val map : f:('a -> 'b) -> 'a array -> 'b array
      val iteri : f:(int -> 'a -> unit) -> 'a array -> unit
      val mapi : f:(int -> 'a -> 'b) -> 'a array -> 'b array
      val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b array -> 'a
      val fold_right : f:('a -> 'b -> 'b) -> 'a array -> init:'b -> 'b
      val sort : cmp:('a -> 'a -> int) -> 'a array -> unit
      val stable_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
      external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"
      external unsafe_set : 'a array -> int -> 'a -> unit = "%array_unsafe_set"
    end