jon.recoil.org

Module Iarray.LocalSource

Operations for local iarrays.

Sourceval length : _ Base.Iarray.t @ local -> int
Sourceval is_empty : _ Base.Iarray.t @ local -> bool
Sourceval mem : 'a Base.Iarray.t @ local -> 'a @ local -> equal:('a @ local -> 'a @ local -> bool) @ local -> bool
Sourceval iter : 'a Base.Iarray.t @ local -> f:('a @ local -> unit) @ local -> unit
Sourceval 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 @ local
Sourceval 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 @ local
Sourceval exists : 'a Base.Iarray.t @ local -> f:('a @ local -> bool) @ local -> bool
Sourceval for_all : 'a Base.Iarray.t @ local -> f:('a @ local -> bool) @ local -> bool
Sourceval count : 'a Base.Iarray.t @ local -> f:('a @ local -> bool) @ local -> int
Sourceval sum : (module Base.Container.Summable__local with type t = 'sum) -> 'a Base.Iarray.t @ local -> f:('a @ local -> 'sum @ local) @ local -> 'sum @ local
Sourceval find : 'a Base.Iarray.t @ local -> f:('a @ local -> bool) @ local -> 'a option @ local
Sourceval find_map : 'a Base.Iarray.t @ local -> f:('a @ local -> 'b option @ local) @ local -> 'b option @ local
Sourceval to_list : 'a Base.Iarray.t @ local -> 'a list @ local
Sourceval min_elt : 'a Base.Iarray.t @ local -> compare:('a @ local -> 'a @ local -> int) @ local -> 'a option @ local
Sourceval max_elt : 'a Base.Iarray.t @ local -> compare:('a @ local -> 'a @ local -> int) @ local -> 'a option @ local
Sourceval of_list : 'a list @ local -> 'a Base.Iarray.t @ local
Sourceval append : 'a Base.Iarray.t @ local -> 'a Base.Iarray.t @ local -> 'a Base.Iarray.t @ local
Sourceval concat : 'a Base.Iarray.t Base.Iarray.t @ local -> 'a Base.Iarray.t @ local
Sourceval map : 'a Base.Iarray.t @ local -> f:('a @ local -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval map_to_global : 'a Base.Iarray.t @ local -> f:('a @ local -> 'b) @ local -> 'b Base.Iarray.t
Sourceval map_of_global : 'a Base.Iarray.t -> f:('a -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval filter : 'a Base.Iarray.t @ local -> f:('a @ local -> bool) @ local -> 'a Base.Iarray.t @ local
Sourceval filter_map : 'a Base.Iarray.t @ local -> f:('a @ local -> 'b option @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval concat_map : 'a Base.Iarray.t @ local -> f:('a @ local -> 'b Base.Iarray.t @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval partition_tf : 'a Base.Iarray.t @ local -> f:('a @ local -> bool) @ local -> 'a Base.Iarray.t * 'a Base.Iarray.t @ local
Sourceval 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 @ local
Sourceval iteri : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> unit) @ local -> unit
Sourceval existsi : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> bool) @ local -> bool
Sourceval for_alli : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> bool) @ local -> bool
Sourceval counti : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> bool) @ local -> int
Sourceval findi : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> bool) @ local -> (int * 'a) option @ local
Sourceval find_mapi : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> 'b option @ local) @ local -> 'b option @ local
Sourceval partitioni_tf : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> bool) @ local -> 'a Base.Iarray.t * 'a Base.Iarray.t @ local
Sourceval 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 @ local
Sourceval mapi : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval mapi_to_global : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> 'b) @ local -> 'b Base.Iarray.t
Sourceval mapi_of_global : 'a Base.Iarray.t -> f:(int -> 'a -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval filteri : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> bool) @ local -> 'a Base.Iarray.t @ local
Sourceval filter_mapi : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> 'b option @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval concat_mapi : 'a Base.Iarray.t @ local -> f:(int -> 'a @ local -> 'b Base.Iarray.t @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval last_exn : 'a Base.Iarray.t @ local -> 'a @ local
Sourcemodule Let_syntax : sig ... end
Sourceval init : int -> f:(int -> 'a @ local) @ local -> 'a Base.Iarray.t @ local

init 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.

Sourceval init_with_globals : int -> f:(int -> 'a) @ local -> 'a Base.Iarray.t @ local

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.

Sourceval singleton : 'a @ local -> 'a Base.Iarray.t @ local
Sourceval create : len:int -> 'a -> mutate:('a array @ local -> unit) @ local -> 'a Basement.Stdlib_iarray_labels.t @ local
Sourceval prefix : 'a Base.Iarray.t @ local -> len:int -> 'a Base.Iarray.t @ local
Sourceval suffix : 'a Base.Iarray.t @ local -> len:int -> 'a Base.Iarray.t @ local
Sourceval drop_prefix : 'a Base.Iarray.t @ local -> len:int -> 'a Base.Iarray.t @ local
Sourceval drop_suffix : 'a Base.Iarray.t @ local -> len:int -> 'a Base.Iarray.t @ local
Sourceval rev : 'a Base.Iarray.t @ local -> 'a Base.Iarray.t @ local
Sourceval sub : 'a Base.Iarray.t @ local -> pos:int -> len:int -> 'a Base.Iarray.t @ local
Sourceval subo : ?pos:int @ local -> ?len:int @ local -> 'a Base.Iarray.t @ local -> 'a Base.Iarray.t @ local

of_list_* functions require temporary call-stack space proportional to the length of the input list, like init.

Sourceval of_list_rev : 'a list @ local -> 'a Base.Iarray.t @ local
Sourceval of_list_map : 'a list @ local -> f:('a @ local -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval of_list_mapi : 'a list @ local -> f:(int @ local -> 'a @ local -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval of_list_rev_map : 'a list @ local -> f:('a @ local -> 'b @ local) @ local -> 'b Base.Iarray.t @ local
Sourceval iter2_exn : 'a Base.Iarray.t @ local -> 'b Base.Iarray.t @ local -> f:('a @ local -> 'b @ local -> unit) @ local -> unit
Sourceval map2_exn : 'a Base.Iarray.t @ local -> 'b Base.Iarray.t @ local -> f:('a @ local -> 'b @ local -> 'c @ local) @ local -> 'c Base.Iarray.t @ local
Sourceval cartesian_product : 'a Base.Iarray.t @ local -> 'b Base.Iarray.t @ local -> ('a * 'b) Base.Iarray.t @ local
include sig ... end
Sourceval fold : 'a ('acc : value_or_null). 'a Base.Iarray.t @ local -> init:'acc @ local -> f:('acc @ local -> 'a @ local -> 'acc @ local) @ local -> 'acc @ local
Sourceval foldi : 'a ('acc : value_or_null). 'a Base.Iarray.t @ local -> init:'acc @ local -> f:(int -> 'acc @ local -> 'a @ local -> 'acc @ local) @ local -> 'acc @ local
Sourceval fold_right : 'a ('acc : value_or_null). 'a Base.Iarray.t @ local -> init:'acc @ local -> f:('a @ local -> 'acc @ local -> 'acc @ local) @ local -> 'acc @ local
Sourceval fold_map : 'a Base.Iarray.t @ local -> init:'acc @ local -> f:('acc @ local -> 'a @ local -> 'acc * 'b @ local) @ local -> 'acc * 'b Base.Iarray.t @ local
Sourceval 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