keen/col/util
SourceThis is a standard module
and does not need to be explicitly imported.
buffer-like[col, elem] spec (col, elem) array-likefor-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 sizeCalls
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) someCalls
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 sizeSame 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) someOnly 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 sizeconcatenate[col] spec~~ col(a col, b col)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) someLike
for-loop, but f must return an array of outputs which are all added to the result.with-index[col] recordinner colsplit[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 equalsummable[t] spec t new+ t(a t, b t)infinite[t] recordvalue tCollection that iterates and returns 'value' forever
reverse[col] recordinner colto[out-col, in-col, elem] out-col(a in-col reverse) (out-col, elem) list-new, in-col size, (in-col, elem) some-reverseindex-of-sequence[col, iter, elem] nat64 option(a col, seq col) (col, iter, elem) basic-iter, iter skip-next-n, elem equalswap-at[col, elem] void(a col, i index-relative-to-end, j index-relative-to-end) (col, elem) buffer-liketake-while[out, col, iter, elem] out(a col, f bool mut(elem)) (iter, col) begin, (elem, iter) take-next, iter copy, (out, iter) slicetake-right-while[out, col, iter, elem] out(a col, f bool mut(elem)) (iter, col) end, (elem, iter) take-prev, iter copy, (out, iter) slicedrop-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) slicedrop-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) slicestarts-with[col, iter, elem] bool(a col, b col) (col, iter, elem) basic-iter, iter skip-next-n, elem equalends-with[col, iter, elem] bool(a col, b col) (col, iter, elem) basic-reverse-iter, iter skip-prev-n, elem equaltry-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 equaltry-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 equalstrip-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 equalRemoves 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 equalRemoves 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 equaltrue 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 equalFinds 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 equalbuilder[t] record (has private fields)build-options recordonly[col, elem] elem option(a col) col size, (col, elem) someIf the collection has a single element, this is it. Otherwise this is an empty option.
ffor each element in the collection and returns nothing.