keen/col/util

Source
This is a standard module and does not need to be explicitly imported.
array-like[col, elem] spec col size
subscript elem(a col, index nat64)
buffer-like[col, elem] spec (col, elem) array-like
set-subscript void(a col, index nat64, value elem)
for-loop[col, elem] void(a col, f void mut(elem)) (col, elem) some
Calls f for each element in the collection and returns nothing.
for-loop[out-col, out-elem, in-col, in-elem] out-col(a in-col, f out-elem mut(in-elem)) (out-col, out-elem) list-new, (in-col, in-elem) some, in-col size
Calls f for each element in the input collection and returns an output collection of the results of f.
filter[out-col, elem, in-col] out-col(a in-col, f bool mut(elem)) (out-col, elem) list-new, in-col size, (in-col, elem) some
Calls f for each element in the input collection, and returns an output collection of the elements for which f returned true.
map[out-col, out-elem, in-col, in-elem] out-col(a in-col, f out-elem mut(in-elem)) (out-col, out-elem) list-new, (in-col, in-elem) some, in-col size
Same as for-loop. For good style, use this only with an it lambda. xs map it.abs is OK, but instead of xs map of x ..., prefer for x in xs ...
map-every[out-col, out-elem, in-col, in-elem] out-col option(a in-col, f out-elem option mut(in-elem)) (out-col, out-elem) list-new, in-col size, (in-col, in-elem) some
Only returns a result if f returned a non-empty option every time.
map-values[out-col, out-value, in-col, in-value, key] out-col(col in-col, f out-value mut(in-value)) (out-col, (key, out-value)) list-new, (in-col, (key, in-value)) some, in-col size
n-of[col, elem] col(n nat64, value elem) (col, elem) list-new
concatenate[col] spec
~~ col(a col, b col)
repeat[col] col(a col, n nat64) col concatenate, col new
for-star[out-col, out-elem, in-col, in-elem] out-col(a in-col, f out-elem[] mut(in-elem)) (out-col, out-elem) list-new, (in-col, in-elem) some
Like for-loop, but f must return an array of outputs which are all added to the result.
with-index[col] record
inner col
size[col] nat64(a col with-index) col size
some[col, elem] bool(a col with-index, f bool mut((nat64, elem))) (col, elem) some
split[out-col, in-col, in-iter, elem] out-col[](a in-col, split-by in-col) (in-col, in-iter, elem) basic-iter, in-iter skip-next-n, (out-col, in-iter) slice, elem equal
count[col, elem] nat64(a col, f bool mut(elem)) (col, elem) some
summable[t] spec t new
+ t(a t, b t)
sum[col, elem] elem(a col) elem summable, (col, elem) some
sum[out, col, elem] out(a col, f out mut(elem)) out summable, (col, elem) some
infinite[t] record
value t
Collection that iterates and returns 'value' forever
infinite void infinite()
some[t] bool(a t infinite, f bool mut(t))
reverse[col] record
inner col
size[col] nat64(a col reverse) col size
some[col, elem] bool(a col reverse, f bool mut(elem)) (col, elem) some-reverse
to[out-col, in-col, elem] out-col(a in-col reverse) (out-col, elem) list-new, in-col size, (in-col, elem) some-reverse
index-of-sequence[col, iter, elem] nat64 option(a col, seq col) (col, iter, elem) basic-iter, iter skip-next-n, elem equal
swap-at[col, elem] void(a col, i nat64, j nat64) (col, elem) buffer-like
swap-at[col, elem] void(a col, i nat64, j index-relative-to-end) (col, elem) buffer-like
swap-at[col, elem] void(a col, i index-relative-to-end, j index-relative-to-end) (col, elem) buffer-like
reverse-in-place[col, elem] void(a col) (col, elem) buffer-like
set-reverse[col, elem] void(a col) (col, elem) buffer-like
take-while[out, col, iter, elem] out(a col, f bool mut(elem)) (iter, col) begin, (elem, iter) take-next, iter copy, (out, iter) slice
take-right-while[out, col, iter, elem] out(a col, f bool mut(elem)) (iter, col) end, (elem, iter) take-prev, iter copy, (out, iter) slice
drop-while[out, col, iter, elem] out(a col, f bool mut(elem)) (iter, col) begin, (iter, col) end, (elem, iter) take-next, iter copy, (out, iter) slice
drop-right-while[out, col, iter, elem] out(a col, f bool mut(elem)) (iter, col) begin, (iter, col) end, (elem, iter) take-prev, iter copy, (out, iter) slice
starts-with[col, iter, elem] bool(a col, b col) (col, iter, elem) basic-iter, iter skip-next-n, elem equal
ends-with[col, iter, elem] bool(a col, b col) (col, iter, elem) basic-reverse-iter, iter skip-prev-n, elem equal
try-remove-start[out, col, iter, elem] out option(a col, start col) (col, iter, elem) basic-iter, (iter, col) end, iter skip-next-n, (out, iter) slice, elem equal
try-remove-end[out, col, iter, elem] out option(a col, end col) (col, iter, elem) basic-reverse-iter, (iter, col) begin, iter skip-prev-n, (out, iter) slice, elem equal
strip-left[col, iter, elem] col(a col, b col) (col, iter, elem) basic-iter, (iter, col) end, iter skip-next-n, (col, iter) slice, elem equal
Removes all occurrences of b from the front of a.
strip-right[col, iter, elem] col(a col, b col) (col, iter, elem) basic-reverse-iter, (iter, col) begin, iter skip-prev-n, (col, iter) slice, elem equal
Removes all occurrences of b from the end of a.
contains-seq[col, iter, elem] bool(a col, b col) (col, iter, elem) basic-iter, iter skip-next-n, elem equal

true if b is contained in a.

That means: The elements in b appear in a, in order, without interruptions.

try-split-once[out, col, iter, elem] (out, out) option(a col, b col) (iter, col) end, (col, iter, elem) basic-iter, iter skip-next-n, (out, iter) slice, elem equal

Finds the first appearance of b in a, and returns slices of a to the left and right of that.

Returns an empty option if b is not a subsequence of a.

try-split-once-right[out, col, iter, elem] (out, out) option(a col, b col) (iter, col) begin, (col, iter, elem) basic-reverse-iter, iter skip-prev-n, (out, iter) slice, elem equal
builder[t] record (has private fields)
This is an opaque type for pushing values to using ~= or ~~=. This deliberately does not provide any way to access the values. You get a builder by using with out in build where out is the builder.
~=[t] void(a t builder, value t)
~~=[t] void(a t builder, values t[])
~~=[t] void(a t builder, values t array-view)
build-options record
size-hint nat64
build build-options()
build build-options(size-hint nat64)
with-block[col, elem] col(a build-options, f void mut(elem builder)) (col, elem) list-new
only[col, elem] elem option(a col) col size, (col, elem) some
If the collection has a single element, this is it. Otherwise this is an empty option.
only2[col, elem] (elem, elem) option(a col) col size, (col, elem) some
If the collection has exactly 2 elements, returns them as a tuple. Otherwise this is an empty option.
only3[col, elem] (elem, elem, elem) tuple3 option(a col) col size, (col, elem) some
If the collection has exactly 3 elements, returns them as a tuple. Otherwise this is an empty option.