Module Iarray.LocalSource
Operations for local iarrays.
val mem :
'a Base.Iarray.t @ local ->
'a @ local ->
equal:('a @ local -> 'a @ local -> bool) @ local ->
boolval fold_result :
'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:('acc @ local -> 'a @ local -> ('acc, 'e) Base.Result.t @ local) @ local ->
('acc, 'e) Base.Result.t @ localval fold_until :
'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 sum :
(module Base.Container.Summable__local with type t = 'sum) ->
'a Base.Iarray.t @ local ->
f:('a @ local -> 'sum @ local) @ local ->
'sum @ localval find_map :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b option @ local) @ local ->
'b option @ localval min_elt :
'a Base.Iarray.t @ local ->
compare:('a @ local -> 'a @ local -> int) @ local ->
'a option @ localval max_elt :
'a Base.Iarray.t @ local ->
compare:('a @ local -> 'a @ local -> int) @ local ->
'a option @ localval map :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval map_to_global :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b) @ local ->
'b Base.Iarray.tval map_of_global :
'a Base.Iarray.t ->
f:('a -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval filter :
'a Base.Iarray.t @ local ->
f:('a @ local -> bool) @ local ->
'a Base.Iarray.t @ localval filter_map :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b option @ local) @ local ->
'b Base.Iarray.t @ localval concat_map :
'a Base.Iarray.t @ local ->
f:('a @ local -> 'b Base.Iarray.t @ local) @ local ->
'b Base.Iarray.t @ localval partition_tf :
'a Base.Iarray.t @ local ->
f:('a @ local -> bool) @ local ->
'a Base.Iarray.t * 'a Base.Iarray.t @ localval partition_map :
'a Base.Iarray.t @ local ->
f:('a @ local -> ('b, 'c) Base.Either.t @ local) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.t @ localval findi :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
(int * 'a) option @ localval find_mapi :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b option @ local) @ local ->
'b option @ localval partitioni_tf :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
'a Base.Iarray.t * 'a Base.Iarray.t @ localval partition_mapi :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> ('b, 'c) Base.Either.t @ local) @ local ->
'b Base.Iarray.t * 'c Base.Iarray.t @ localval mapi :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval mapi_to_global :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b) @ local ->
'b Base.Iarray.tval mapi_of_global :
'a Base.Iarray.t ->
f:(int -> 'a -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval filteri :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> bool) @ local ->
'a Base.Iarray.t @ localval filter_mapi :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b option @ local) @ local ->
'b Base.Iarray.t @ localval concat_mapi :
'a Base.Iarray.t @ local ->
f:(int -> 'a @ local -> 'b Base.Iarray.t @ local) @ local ->
'b Base.Iarray.t @ localinit has an unusual implementation: it temporarily uses O(n) space on the function-call stack (not the locals stack). This is necessary because the contents of the array must be allocated before the array itself, and so we use n pointers on the function-call stack to do so. Accordingly, allocating a large array with init might cause a stack overflow.
An alternative implementation would use the locals stack to store the pointers, but this allocation would last as long as the array itself.
Note that this function never itself allocates on the heap, only on the stack.
init_with_globals avoids the extra O(n) function-call stack space of init, because the array contents are guaranteed not to be stored in the local data stack. Therefore, they do not need to be allocated before the array.
val create :
len:int ->
'a ->
mutate:('a array @ local -> unit) @ local ->
'a Basement.Stdlib_iarray_labels.t @ localval subo :
?pos:int @ local ->
?len:int @ local ->
'a Base.Iarray.t @ local ->
'a Base.Iarray.t @ localof_list_* functions require temporary call-stack space proportional to the length of the input list, like init.
val of_list_map :
'a list @ local ->
f:('a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval of_list_mapi :
'a list @ local ->
f:(int @ local -> 'a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval of_list_rev_map :
'a list @ local ->
f:('a @ local -> 'b @ local) @ local ->
'b Base.Iarray.t @ localval iter2_exn :
'a Base.Iarray.t @ local ->
'b Base.Iarray.t @ local ->
f:('a @ local -> 'b @ local -> unit) @ local ->
unitval map2_exn :
'a Base.Iarray.t @ local ->
'b Base.Iarray.t @ local ->
f:('a @ local -> 'b @ local -> 'c @ local) @ local ->
'c Base.Iarray.t @ localval cartesian_product :
'a Base.Iarray.t @ local ->
'b Base.Iarray.t @ local ->
('a * 'b) Base.Iarray.t @ localinclude sig ... end
val fold :
'a ('acc : value_or_null). 'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:('acc @ local -> 'a @ local -> 'acc @ local) @ local ->
'acc @ localval foldi :
'a ('acc : value_or_null). 'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:(int -> 'acc @ local -> 'a @ local -> 'acc @ local) @ local ->
'acc @ localval fold_right :
'a ('acc : value_or_null). 'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:('a @ local -> 'acc @ local -> 'acc @ local) @ local ->
'acc @ localval fold_map :
'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:('acc @ local -> 'a @ local -> 'acc * 'b @ local) @ local ->
'acc * 'b Base.Iarray.t @ localval fold_mapi :
'a Base.Iarray.t @ local ->
init:'acc @ local ->
f:(int -> 'acc @ local -> 'a @ local -> 'acc * 'b @ local) @ local ->
'acc * 'b Base.Iarray.t @ local