Module Base.IarraySource
module type Operators = sig ... endmodule type Public = sig ... endinclude Base.Iarray.Public with type 'a t = 'a Basement.Stdlib_iarray_labels.t
include sig ... end
val compare__local :
'a. ('a @ local -> 'a @ local -> int) ->
'a Base.Iarray.t @ local ->
'a Base.Iarray.t @ local ->
intval equal__local :
'a. ('a @ local -> 'a @ local -> bool) ->
'a Base.Iarray.t @ local ->
'a Base.Iarray.t @ local ->
boolval sexp_of_t__stack :
'a. ('a @ local -> Sexplib0.Sexp.t @ local) ->
'a Base.Iarray.t @ local ->
Sexplib0.Sexp.t @ localval t_sexp_grammar :
'a. 'a Sexplib0.Sexp_grammar.t ->
'a Base.Iarray.t Sexplib0.Sexp_grammar.t @@ portableinclude sig ... end
Standard interfaces
include Base.Binary_searchable.S1__local with type 'a t := 'a Base.Iarray.t
val binary_search :
?pos:int ->
?len:int ->
'a Base.Iarray.t ->
compare:('a -> 'key -> int) @ local ->
[ `Last_strictly_less_than
| `Last_less_than_or_equal_to
| `Last_equal_to
| `First_equal_to
| `First_greater_than_or_equal_to
| `First_strictly_greater_than ] ->
'key ->
int option @ localval binary_search__local :
?pos:int ->
?len:int ->
'a Base.Iarray.t @ local ->
compare:('a @ local -> 'key @ local -> int) @ local ->
[ `Last_strictly_less_than
| `Last_less_than_or_equal_to
| `Last_equal_to
| `First_equal_to
| `First_greater_than_or_equal_to
| `First_strictly_greater_than ] ->
'key @ local ->
int option @ localval binary_search_segmented :
?pos:int ->
?len:int ->
'a Base.Iarray.t ->
segment_of:('a -> [ `Left | `Right ]) @ local ->
[ `Last_on_left | `First_on_right ] ->
int option @ localval binary_search_segmented__local :
?pos:int ->
?len:int ->
'a Base.Iarray.t @ local ->
segment_of:('a @ local -> [ `Left | `Right ]) @ local ->
[ `Last_on_left | `First_on_right ] ->
int option @ localinclude Base.Indexed_container.S1_with_creators__stack
with type 'a t := 'a Base.Iarray.t
val iteri_until :
'a Base.Iarray.t ->
f:(int -> 'a -> (unit, 'final) Container.Continue_or_stop.t) @ local ->
finish:(int -> 'final) @ local ->
'finalval foldi_until :
'a Base.Iarray.t ->
init:'acc ->
f:(int -> 'acc -> 'a -> ('acc, 'final) Container.Continue_or_stop.t) @ local ->
finish:(int -> 'acc -> 'final) @ local ->
'finalval iteri_until__global__local :
'a Base.Iarray.t ->
f:(int -> 'a -> (unit, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:(int -> 'final @ local) @ local ->
'final @ localval find_mapi__global__local :
'a Base.Iarray.t ->
f:(int -> 'a -> 'b option @ local) @ local ->
'b option @ localval foldi_until__global__local :
'a Base.Iarray.t ->
init:'acc @ local ->
f:
(int ->
'acc @ local ->
'a ->
('acc, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:(int -> 'acc @ local -> 'final @ local) @ local ->
'final @ localval existsi__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
boolval for_alli__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
boolval iteri_until__local__global :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> (unit, 'final) Container.Continue_or_stop.t) @ local ->
finish:(int -> 'final) @ local ->
'finalval find_mapi__local__global :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b option) @ local ->
'b optionval foldi_until__local__global :
'a Base.Iarray.t @ local ->
init:'acc ->
f:
(int -> 'acc -> 'a @ local -> ('acc, 'final) Container.Continue_or_stop.t) @ local ->
finish:(int -> 'acc -> 'final) @ local ->
'finalval iteri_until__local__local :
'a Base.Iarray.t @ local ->
f:
(int -> 'a @ local -> (unit, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:(int -> 'final @ local) @ local ->
'final @ localval find_mapi__local__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b option @ local) @ local ->
'b option @ localval foldi_until__local__local :
'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:
(int ->
'acc @ local ->
'a @ local ->
('acc, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:(int -> 'acc @ local -> 'final @ local) @ local ->
'final @ localval findi__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
(int * 'a) option @ localval find__local :
'a Base.Iarray.t @ local ->
f:('a @ local -> bool) @ local ->
'a option @ localval min_elt__local :
'a Base.Iarray.t @ local ->
compare:('a @ local -> 'a @ local -> int) @ local ->
'a option @ localval max_elt__local :
'a Base.Iarray.t @ local ->
compare:('a @ local -> 'a @ local -> int) @ local ->
'a option @ localval sum :
(module Base__Container_intf.Definitions.Summable__value_or_null
with type t = 'sum) ->
'a Base.Iarray.t ->
f:('a -> 'sum) @ local ->
'sumval sum__global__local :
(module Base__Container_intf.Definitions.Summable__value_or_null__local
with type t = 'sum) ->
'a Base.Iarray.t ->
f:('a -> 'sum @ local) @ local ->
'sum @ localval sum__local__global :
(module Base__Container_intf.Definitions.Summable__value_or_null
with type t = 'sum) ->
'a Base.Iarray.t @ local ->
f:('a @ local -> 'sum) @ local ->
'sumval sum__local__local :
(module Base__Container_intf.Definitions.Summable__value_or_null__local
with type t = 'sum) ->
'a Base.Iarray.t @ local ->
f:('a @ local -> 'sum @ local) @ local ->
'sum @ localval iter_until :
'a Base.Iarray.t ->
f:('a -> (unit, 'final) Container.Continue_or_stop.t) @ local ->
finish:(unit -> 'final) @ local ->
'finalval iter_until__global__local :
'a Base.Iarray.t ->
f:('a -> (unit, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:(unit -> 'final @ local) @ local ->
'final @ localval iter_until__local__global :
'a Base.Iarray.t @ local ->
f:('a @ local -> (unit, 'final) Container.Continue_or_stop.t) @ local ->
finish:(unit -> 'final) @ local ->
'finalval iter_until__local__local :
'a Base.Iarray.t @ local ->
f:('a @ local -> (unit, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:(unit -> 'final @ local) @ local ->
'final @ localval fold_result :
'a Base.Iarray.t ->
init:'acc ->
f:('acc -> 'a -> ('acc, 'e) Stdlib.result) @ local ->
('acc, 'e) Stdlib.resultval fold_result__global__local :
'a Base.Iarray.t ->
init:'acc @ local ->
f:('acc @ local -> 'a -> ('acc, 'e) Stdlib.result @ local) @ local ->
('acc, 'e) Stdlib.result @ localval fold_result__local__global :
'a Base.Iarray.t @ local ->
init:'acc ->
f:('acc -> 'a @ local -> ('acc, 'e) Stdlib.result) @ local ->
('acc, 'e) Stdlib.resultval fold_result__local__local :
'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:('acc @ local -> 'a @ local -> ('acc, 'e) Stdlib.result @ local) @ local ->
('acc, 'e) Stdlib.result @ localval find_map__global__local :
'a Base.Iarray.t ->
f:('a -> 'b option @ local) @ local ->
'b option @ localval find_map__local__global :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b option) @ local ->
'b optionval find_map__local__local :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b option @ local) @ local ->
'b option @ localval fold_until :
'a Base.Iarray.t ->
init:'acc ->
f:('acc -> 'a -> ('acc, 'final) Container.Continue_or_stop.t) @ local ->
finish:('acc -> 'final) @ local ->
'finalval fold_until__global__local :
'a Base.Iarray.t ->
init:'acc @ local ->
f:
('acc @ local -> 'a -> ('acc, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:('acc @ local -> 'final @ local) @ local ->
'final @ localval fold_until__local__global :
'a Base.Iarray.t @ local ->
init:'acc ->
f:('acc -> 'a @ local -> ('acc, 'final) Container.Continue_or_stop.t) @ local ->
finish:('acc -> 'final) @ local ->
'finalval fold_until__local__local :
'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:
('acc @ local ->
'a @ local ->
('acc, 'final) Container.Continue_or_stop.t @ local) @ local ->
finish:('acc @ local -> 'final @ local) @ local ->
'final @ localval mem__local :
'a Base.Iarray.t @ local ->
'a @ local ->
equal:('a @ local -> 'a @ local -> bool) @ local ->
boolval append__stack :
'a Base.Iarray.t @ local ->
'a Base.Iarray.t @ local ->
'a Base.Iarray.t @ localval filter__stack :
'a Base.Iarray.t @ local ->
f:('a @ local -> bool) @ local ->
'a Base.Iarray.t @ localval partition_tf :
'a Base.Iarray.t ->
f:('a -> bool) @ local ->
'a Base.Iarray.t * 'a Base.Iarray.tval partition_tf__stack :
'a Base.Iarray.t @ local ->
f:('a @ local -> bool) @ local ->
'a Base.Iarray.t * 'a Base.Iarray.t @ localval map__local__stack :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval filter_map__stack :
'a Base.Iarray.t ->
f:('a -> 'b option @ local) @ local ->
'b Base.Iarray.t @ localval filter_map__local :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b option) @ local ->
'b Base.Iarray.tval filter_map__local__stack :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b option @ local) @ local ->
'b Base.Iarray.t @ localval concat_map__stack :
'a Base.Iarray.t ->
f:('a -> 'b Base.Iarray.t @ local) @ local ->
'b Base.Iarray.t @ localval concat_map__local :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b Base.Iarray.t) @ local ->
'b Base.Iarray.tval concat_map__local__stack :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b Base.Iarray.t @ local) @ local ->
'b Base.Iarray.t @ localval partition_map :
'a Base.Iarray.t ->
f:('a -> ('b, 'c) Base__Either0.t) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.tval partition_map__stack :
'a Base.Iarray.t ->
f:('a -> ('b, 'c) Base__Either0.t @ local) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.t @ localval partition_map__local :
'a Base.Iarray.t @ local ->
f:('a @ local -> ('b, 'c) Base__Either0.t) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.tval partition_map__local__stack :
'a Base.Iarray.t @ local ->
f:('a @ local -> ('b, 'c) Base__Either0.t @ local) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.t @ localval filteri__stack :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
'a Base.Iarray.t @ localval partitioni_tf :
'a Base.Iarray.t ->
f:(int -> 'a -> bool) @ local ->
'a Base.Iarray.t * 'a Base.Iarray.tpartitioni_tf t ~f is like partition_tf. Additionally, it passes the index as an argument.
val partitioni_tf__stack :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
'a Base.Iarray.t * 'a Base.Iarray.t @ localpartitioni_tf t ~f is like partition_tf. Additionally, it passes the index as an argument.
mapi is like map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val mapi__stack :
'a Base.Iarray.t ->
f:(int -> 'a -> 'b @ local) @ local ->
'b Base.Iarray.t @ localmapi is like map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val mapi__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b) @ local ->
'b Base.Iarray.tmapi is like map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val mapi__local__stack :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localmapi is like map. Additionally, it passes in the index of each element as the first argument to the mapped function.
filter_mapi is like filter_map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val filter_mapi__stack :
'a Base.Iarray.t ->
f:(int -> 'a -> 'b option @ local) @ local ->
'b Base.Iarray.t @ localfilter_mapi is like filter_map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val filter_mapi__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b option) @ local ->
'b Base.Iarray.tfilter_mapi is like filter_map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val filter_mapi__local__stack :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b option @ local) @ local ->
'b Base.Iarray.t @ localfilter_mapi is like filter_map. Additionally, it passes in the index of each element as the first argument to the mapped function.
val concat_mapi :
'a Base.Iarray.t ->
f:(int -> 'a -> 'b Base.Iarray.t) @ local ->
'b Base.Iarray.tconcat_mapi t ~f is like concat_map. Additionally, it passes the index as an argument.
val concat_mapi__stack :
'a Base.Iarray.t ->
f:(int -> 'a -> 'b Base.Iarray.t @ local) @ local ->
'b Base.Iarray.t @ localconcat_mapi t ~f is like concat_map. Additionally, it passes the index as an argument.
val concat_mapi__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b Base.Iarray.t) @ local ->
'b Base.Iarray.tconcat_mapi t ~f is like concat_map. Additionally, it passes the index as an argument.
val concat_mapi__local__stack :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b Base.Iarray.t @ local) @ local ->
'b Base.Iarray.t @ localconcat_mapi t ~f is like concat_map. Additionally, it passes the index as an argument.
val partition_mapi :
'a Base.Iarray.t ->
f:(int -> 'a -> ('b, 'c) Base__.Either0.t) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.tpartition_mapi t ~f is like partition_map. Additionally, it passes the index as an argument.
val partition_mapi__stack :
'a Base.Iarray.t ->
f:(int -> 'a -> ('b, 'c) Base__.Either0.t @ local) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.t @ localpartition_mapi t ~f is like partition_map. Additionally, it passes the index as an argument.
val partition_mapi__local :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> ('b, 'c) Base__.Either0.t) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.tpartition_mapi t ~f is like partition_map. Additionally, it passes the index as an argument.
val partition_mapi__local__stack :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> ('b, 'c) Base__.Either0.t @ local) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.t @ localpartition_mapi t ~f is like partition_map. Additionally, it passes the index as an argument.
include Base.Invariant.S1 with type 'a t := 'a Base.Iarray.t
Operators
val (.:()) : 'a. 'a Basement.Stdlib_iarray_labels.t -> int -> 'aAn alias for get.
Indexing
val length : 'a. 'a Base.Iarray.t @ immutable -> intinclude sig ... end
val get : 'a. 'a Base.Iarray.t -> int -> 'aval unsafe_get : 'a. 'a Base.Iarray.t -> int -> 'ainclude sig ... end
include sig ... end
Functional update
Constructors
val create :
len:int ->
'a ->
mutate:('a array @ local -> unit) @ local ->
'a Basement.Stdlib_iarray_labels.tConversions
Subsequences
val group :
'a Base.Iarray.t ->
break:('a -> 'a -> bool) @ local ->
'a Base.Iarray.t Base.Iarray.tsplit_n t n returns a pair of iarrays (first, second) where first contains the first n elements of t and second contains the remaining elements.
- If
n >= length t, returns(t, empty). - If
n <= 0, returns(empty, t).
chunks_of t ~length returns an iarray of iarrays whose concatenation is equal to the original iarray. Every iarray has length elements, except for possibly the last iarray, which may have fewer. chunks_of raises if length <= 0.
Reordering
val dedup_and_sort :
'a Base.Iarray.t ->
compare:('a -> 'a -> int) @ local ->
'a Base.Iarray.tval sort_and_group :
'a Base.Iarray.t ->
compare:('a -> 'a -> int) @ local ->
'a Base.Iarray.t Base.Iarray.tCombining elements
include sig ... end
include sig ... end
val fold :
'a ('acc : value_or_null). 'a Base.Iarray.t ->
init:'acc ->
f:('acc -> 'a -> 'acc) @ local ->
'accval foldi :
'a ('acc : value_or_null). 'a Base.Iarray.t ->
init:'acc ->
f:(int -> 'acc -> 'a -> 'acc) @ local ->
'accval fold_right :
'a ('acc : value_or_null). 'a Base.Iarray.t ->
init:'acc ->
f:('a -> 'acc -> 'acc) @ local ->
'accval fold_map :
'a Base.Iarray.t ->
init:'acc ->
f:('acc -> 'a -> 'acc * 'b) @ local ->
'acc * 'b Base.Iarray.tval fold_mapi :
'a Base.Iarray.t ->
init:'acc ->
f:(int -> 'acc -> 'a -> 'acc * 'b) @ local ->
'acc * 'b Base.Iarray.tMultiple arrays
val map2_exn :
'a Base.Iarray.t ->
'b Base.Iarray.t ->
f:('a -> 'b -> 'c) @ local ->
'c Base.Iarray.tRandom elements
Blit operations
Unsafe conversions
Immutable arrays can be converted to and from mutable arrays, as they can have the same representation. One must be careful not to modify the mutable array sharing a representation with an immutable array at any time when both are reachable. Doing so violates the invariants of the immutable array. The OCaml compiler might rely on these invariants when compiling or optimizing code that uses immutable arrays.