56. LINQ
The LINQ module implements LINQ (Language Integrated Query) capabilities in Daslang.
All functions and symbols are in “linq” module, use require to get access to it.
require daslib/linq
56.1. Sorting data
order_inplace (var buffer: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : auto
order (var a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : iterator<TT>
order (a: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>
order_to_array (var a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>
order_descending_inplace (var buffer: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : auto
order_descending (var a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : iterator<TT>
order_descending (a: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>
order_descending_to_array (var a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>
order_by_inplace (var buffer: array<auto(TT)>; key: auto) : auto
order_by (var a: iterator<auto(TT)>; key: auto) : iterator<TT>
order_by_to_array (var a: iterator<auto(TT)>; key: auto) : array<TT>
order_by_descending_inplace (var buffer: array<auto(TT)>; key: auto) : auto
order_by_descending (var a: iterator<auto(TT)>; key: auto) : iterator<TT>
order_by_descending (a: array<auto(TT)>; key: auto) : array<TT>
order_by_descending_to_array (var a: iterator<auto(TT)>; key: auto) : array<TT>
- reverse_inplace(buffer: array<auto(TT)>) : auto()
Reverses an array in place
- Arguments
buffer : array<auto(TT)>
- reverse(a: array<auto(TT)>) : array<TT>()
Reverses an array
- Arguments
a : array<auto(TT)>
- reverse(a: iterator<auto(TT)>) : iterator<TT>()
Reverses an iterator
- Arguments
a : iterator<auto(TT)>
- reverse_to_array(a: iterator<auto(TT)>) : array<TT>()
Reverses an iterator and returns an array
- Arguments
a : iterator<auto(TT)>
- order_inplace(buffer: array<auto(TT)>) : auto()
Sorts an array in place
- Arguments
buffer : array<auto(TT)>
- order(a: iterator<auto(TT)>) : iterator<TT>()
Sorts an iterator
- Arguments
a : iterator<auto(TT)>
- order(arr: array<auto(TT)>) : array<TT>()
Sorts an array
- Arguments
arr : array<auto(TT)>
- order_to_array(a: iterator<auto(TT)>) : array<TT>()
Sorts an iterator and returns an array
- Arguments
a : iterator<auto(TT)>
- order_inplace(buffer: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : auto()
Sorts an array in place
- Arguments
buffer : array<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order(a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : iterator<TT>()
Sorts an iterator
- Arguments
a : iterator<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order(a: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>()
Sorts an array
- Arguments
a : array<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order_to_array(a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>()
Sorts an iterator and returns an array
- Arguments
a : iterator<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order_descending_inplace(buffer: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : auto()
Sorts an array in descending order in place
- Arguments
buffer : array<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order_descending(a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : iterator<TT>()
Sorts an iterator in descending order
- Arguments
a : iterator<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order_descending(a: array<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>()
Sorts an array in descending order
- Arguments
a : array<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order_descending_to_array(a: iterator<auto(TT)>; fun: block<(v1:TT;v2:TT):bool>) : array<TT>()
Sorts an iterator in descending order and returns an array
- Arguments
a : iterator<auto(TT)>
fun : block<(v1:TT;v2:TT):bool>
- order_by_inplace(buffer: array<auto(TT)>; key: auto) : auto()
Sorts an array in place
- Arguments
buffer : array<auto(TT)>
key : auto
- order_by(a: iterator<auto(TT)>; key: auto) : iterator<TT>()
Sorts an iterator
- Arguments
a : iterator<auto(TT)>
key : auto
- order_by(a: array<auto(TT)>; key: auto) : array<TT>()
Sorts an array
- Arguments
a : array<auto(TT)>
key : auto
- order_by_to_array(a: iterator<auto(TT)>; key: auto) : array<TT>()
Sorts an iterator and returns an array
- Arguments
a : iterator<auto(TT)>
key : auto
- order_by_descending_inplace(buffer: array<auto(TT)>; key: auto) : auto()
Sorts an array in descending order in place
- Arguments
buffer : array<auto(TT)>
key : auto
- order_by_descending(a: iterator<auto(TT)>; key: auto) : iterator<TT>()
Sorts an iterator in descending order
- Arguments
a : iterator<auto(TT)>
key : auto
- order_by_descending(a: array<auto(TT)>; key: auto) : array<TT>()
Sorts an array in descending order
- Arguments
a : array<auto(TT)>
key : auto
- order_by_descending_to_array(a: iterator<auto(TT)>; key: auto) : array<TT>()
Sorts an iterator in descending order and returns an array
- Arguments
a : iterator<auto(TT)>
key : auto
- order_unique_folded(a: array<auto(TT)>) : array<TT>()
sort and remove duplicate elements from an array
- Arguments
a : array<auto(TT)>
- order_unique_folded(a: iterator<auto(TT)>) : array<TT>()
sort and remove duplicate elements from an iterator
- Arguments
a : iterator<auto(TT)>
- order_unique_folded_inplace(a: array<auto(TT)>) : auto()
sort and remove duplicate elements from an array
- Arguments
a : array<auto(TT)>
56.2. Set operations
distinct_by (a: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
distinct_by_to_array (var a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
distinct_by (var a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>
distinct_by_inplace (var a: array<auto(TT)>; key: block<(arg:TT):auto>) : auto
unique_by (a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>
unique_by (a: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
unique_by_to_array (a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
unique_by_inplace (var a: array<auto(TT)>; key: block<(arg:TT):auto>) : auto
union (var srca: array<auto(TT)>; var srcb: array<auto(TT)>) : array<TT>
union (var srca: iterator<auto(TT)>; var srcb: iterator<auto(TT)>) : iterator<TT>
union_to_array (var srca: iterator<auto(TT)>; var srcb: iterator<auto(TT)>) : array<TT>
union_by (srca: array<auto(TT)>; srcb: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
except (var src: iterator<auto(TT)>; var exclude: iterator<auto(TT)>) : iterator<TT>
except (src: array<auto(TT)>; exclude: array<auto(TT)>) : array<TT>
except_to_array (var src: iterator<auto(TT)>; var exclude: iterator<auto(TT)>) : array<TT>
except_by (src: array<auto(TT)>; exclude: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
intersect (var srca: iterator<auto(TT)>; var srcb: iterator<auto(TT)>) : iterator<TT>
intersect (srca: array<auto(TT)>; srcb: array<auto(TT)>) : array<TT>
intersect_to_array (var srca: iterator<auto(TT)>; var srcb: iterator<auto(TT)>) : array<TT>
intersect_by (srca: array<auto(TT)>; srcb: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>
- unique_key(a: auto) : auto()
generates unique key of workhorse type for the value
- Arguments
a : auto
- distinct(a: array<auto(TT)>) : array<TT>()
Returns distinct elements from an array
- Arguments
a : array<auto(TT)>
- distinct_to_array(a: iterator<auto(TT)>) : array<TT>()
Returns distinct elements from an iterator and returns an array
- Arguments
a : iterator<auto(TT)>
- distinct_inplace(a: array<auto(TT)>) : auto()
Returns distinct elements from an array in place
- Arguments
a : array<auto(TT)>
- distinct(a: iterator<auto(TT)>) : iterator<TT>()
Returns distinct elements from an iterator
- Arguments
a : iterator<auto(TT)>
- distinct_by(a: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns distinct elements from an array based on a key
- Arguments
a : array<auto(TT)>
key : block<(arg:TT):auto>
- distinct_by_to_array(a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns distinct elements from an iterator based on a key and returns an array
- Arguments
a : iterator<auto(TT)>
key : block<(arg:TT):auto>
- distinct_by(a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>()
Returns distinct elements from an iterator based on a key
- Arguments
a : iterator<auto(TT)>
key : block<(arg:TT):auto>
- distinct_by_inplace(a: array<auto(TT)>; key: block<(arg:TT):auto>) : auto()
Returns distinct elements from an array based on a key in place
- Arguments
a : array<auto(TT)>
key : block<(arg:TT):auto>
- unique(a: iterator<auto(TT)>) : iterator<TT>()
sort and remove duplicate elements from an iterator
- Arguments
a : iterator<auto(TT)>
- unique(a: array<auto(TT)>) : array<TT>()
sort and remove duplicate elements from an array
- Arguments
a : array<auto(TT)>
- unique_to_array(a: iterator<auto(TT)>) : array<TT>()
sort and remove duplicate elements from an iterator and returns an array
- Arguments
a : iterator<auto(TT)>
- unique_inplace(a: array<auto(TT)>) : auto()
remove duplicate elements from sorted array in place
- Arguments
a : array<auto(TT)>
- unique_by(a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>()
sort and remove duplicate elements from an iterator based on a key
- Arguments
a : iterator<auto(TT)>
key : block<(arg:TT):auto>
- unique_by(a: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
sort and remove duplicate elements from an array based on a key
- Arguments
a : array<auto(TT)>
key : block<(arg:TT):auto>
- unique_by_to_array(a: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
sort and remove duplicate elements from an iterator based on a key and returns an array
- Arguments
a : iterator<auto(TT)>
key : block<(arg:TT):auto>
- unique_by_inplace(a: array<auto(TT)>; key: block<(arg:TT):auto>) : auto()
remove duplicate elements from an array based on a key in place
- Arguments
a : array<auto(TT)>
key : block<(arg:TT):auto>
- union(srca: array<auto(TT)>; srcb: array<auto(TT)>) : array<TT>()
Returns distinct elements from the concatenation of two arrays
- Arguments
srca : array<auto(TT)>
srcb : array<auto(TT)>
- union(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>) : iterator<TT>()
Returns distinct elements from the concatenation of two iterators
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
- union_to_array(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>) : array<TT>()
Returns distinct elements from the concatenation of two iterators and returns an array
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
- union_by(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>()
Returns distinct elements from the concatenation of two iterators by key
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
key : block<(arg:TT):auto>
- union_by(srca: array<auto(TT)>; srcb: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns distinct elements from the concatenation of two arrays by key
- Arguments
srca : array<auto(TT)>
srcb : array<auto(TT)>
key : block<(arg:TT):auto>
- union_by_to_array(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns distinct elements from the concatenation of two iterators by key and returns an array
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
key : block<(arg:TT):auto>
- except(src: iterator<auto(TT)>; exclude: iterator<auto(TT)>) : iterator<TT>()
Returns elements from the first iterator that are not in the second iterator
- Arguments
src : iterator<auto(TT)>
exclude : iterator<auto(TT)>
- except(src: array<auto(TT)>; exclude: array<auto(TT)>) : array<TT>()
Returns elements from the first array that are not in the second array
- Arguments
src : array<auto(TT)>
exclude : array<auto(TT)>
- except_to_array(src: iterator<auto(TT)>; exclude: iterator<auto(TT)>) : array<TT>()
Returns elements from the first iterator that are not in the second iterator and returns an array
- Arguments
src : iterator<auto(TT)>
exclude : iterator<auto(TT)>
- except_by(src: iterator<auto(TT)>; exclude: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>()
Returns elements from the first iterator that are not in the second iterator by key
- Arguments
src : iterator<auto(TT)>
exclude : iterator<auto(TT)>
key : block<(arg:TT):auto>
- except_by(src: array<auto(TT)>; exclude: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns elements from the first array that are not in the second array by key
- Arguments
src : array<auto(TT)>
exclude : array<auto(TT)>
key : block<(arg:TT):auto>
- except_by_to_array(src: iterator<auto(TT)>; exclude: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns elements from the first iterator that are not in the second iterator by key and returns an array
- Arguments
src : iterator<auto(TT)>
exclude : iterator<auto(TT)>
key : block<(arg:TT):auto>
- intersect(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>) : iterator<TT>()
Returns elements that are present in both iterators
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
- intersect(srca: array<auto(TT)>; srcb: array<auto(TT)>) : array<TT>()
Returns elements that are present in both arrays
- Arguments
srca : array<auto(TT)>
srcb : array<auto(TT)>
- intersect_to_array(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>) : array<TT>()
Returns elements that are present in both iterators and returns an array
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
- intersect_by(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>; key: block<(arg:TT):auto>) : iterator<TT>()
Returns elements that are present in both iterators by key
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
key : block<(arg:TT):auto>
- intersect_by(srca: array<auto(TT)>; srcb: array<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns elements that are present in both arrays by key
- Arguments
srca : array<auto(TT)>
srcb : array<auto(TT)>
key : block<(arg:TT):auto>
- intersect_by_to_array(srca: iterator<auto(TT)>; srcb: iterator<auto(TT)>; key: block<(arg:TT):auto>) : array<TT>()
Returns elements that are present in both iterators by key and returns an array
- Arguments
srca : iterator<auto(TT)>
srcb : iterator<auto(TT)>
key : block<(arg:TT):auto>
56.3. Concatenation operations
concat_to_array (var a: iterator<auto(TT)>; var b: iterator<auto(TT)>) : array<TT>
concat (var a: iterator<auto(TT)>; var b: iterator<auto(TT)>) : iterator<TT>
concat_inplace (var a: array<auto(TT)>; b: array<auto(TT)>) : auto
prepend_to_array (var it: iterator<auto(TT)>; value: TT) : array<TT>
prepend (var it: iterator<auto(TT)>; value: TT) : iterator<TT>
prepend_inplace (var arr: array<auto(TT)>; value: TT) : auto
append_to_array (var it: iterator<auto(TT)>; value: TT) : array<TT>
append (var it: iterator<auto(TT)>; value: TT) : iterator<TT>
- concat(a: array<auto(TT)>; b: array<auto(TT)>) : array<TT>()
Concatenates two arrays
- Arguments
a : array<auto(TT)>
b : array<auto(TT)>
- concat_to_array(a: iterator<auto(TT)>; b: iterator<auto(TT)>) : array<TT>()
Concatenates two iterators and returns an array
- Arguments
a : iterator<auto(TT)>
b : iterator<auto(TT)>
- concat(a: iterator<auto(TT)>; b: iterator<auto(TT)>) : iterator<TT>()
Concatenates two iterators
- Arguments
a : iterator<auto(TT)>
b : iterator<auto(TT)>
- concat_inplace(a: array<auto(TT)>; b: array<auto(TT)>) : auto()
Concatenates two arrays in place
- Arguments
a : array<auto(TT)>
b : array<auto(TT)>
- prepend(arr: array<auto(TT)>; value: TT) : array<TT>()
Prepends a value to the beginning of an array
- Arguments
arr : array<auto(TT)>
value : TT
- prepend_to_array(it: iterator<auto(TT)>; value: TT) : array<TT>()
Prepends a value to the beginning of an iterator and returns an array
- Arguments
it : iterator<auto(TT)>
value : TT
- prepend(it: iterator<auto(TT)>; value: TT) : iterator<TT>()
Prepends a value to the beginning of an iterator
- Arguments
it : iterator<auto(TT)>
value : TT
- prepend_inplace(arr: array<auto(TT)>; value: TT) : auto()
Prepends a value to the beginning of an array in place
- Arguments
arr : array<auto(TT)>
value : TT
- append(arr: array<auto(TT)>; value: TT) : array<TT>()
Appends a value to the end of an array
- Arguments
arr : array<auto(TT)>
value : TT
- append_to_array(it: iterator<auto(TT)>; value: TT) : array<TT>()
Appends a value to the end of an iterator and returns an array
- Arguments
it : iterator<auto(TT)>
value : TT
- append(it: iterator<auto(TT)>; value: TT) : iterator<TT>()
Appends a value to the end of an iterator
- Arguments
it : iterator<auto(TT)>
value : TT
- append_inplace(arr: array<auto(TT)>; value: TT) : auto()
Appends a value to the end of an array in place
- Arguments
arr : array<auto(TT)>
value : TT
56.4. Generation operations
- range_sequence(start: int; count: int) : iterator<int>()
Generates a sequence of integers within a specified range
- Arguments
start : int
count : int
- empty(typ: auto(TT)) : iterator<TT>()
Returns an empty iterator of the specified type
- Arguments
typ : auto(TT)
- default_empty(src: iterator<auto(TT)>) : iterator<TT>()
Returns the elements of the iterator, or a default value if the iterator is empty
- Arguments
src : iterator<auto(TT)>
- repeat(element: auto(TT); count: int) : iterator<TT>()
Generates a sequence that contains one repeated value
- Arguments
element : auto(TT)
count : int
56.5. Aggregation operations
min_max_by (var src: iterator<auto(TT)>; key: auto) : tuple<TT;TT>
aggregate (var src: iterator<auto(TT)>; seed: auto(AGG); func: block<(acc:AGG;x:TT):AGG>) : AGG
aggregate (src: array<auto(TT)>; seed: auto(AGG); func: block<(acc:AGG;x:TT):AGG>) : AGG
min_max_average (var src: iterator<auto(TT)>) : tuple<TT;TT;TT>
min_max_average_by (var src: iterator<auto(TT)>; key: auto) : tuple<TT;TT;TT>
min_max_average_by (src: array<auto(TT)>; key: auto) : tuple<TT;TT;TT>
- count(a: iterator<auto(TT)>) : int()
Counts elements in an iterator
- Arguments
a : iterator<auto(TT)>
- count(a: array<auto(TT)>) : int()
Counts elements in an array
- Arguments
a : array<auto(TT)>
- long_count(a: iterator<auto(TT)>) : int64()
Counts elements in an iterator, using a long integer
- Arguments
a : iterator<auto(TT)>
- long_count(a: array<auto(TT)>) : int64()
Counts elements in an array, using a long integer
- Arguments
a : array<auto(TT)>
- min(src: iterator<auto(TT)>) : TT()
Finds the minimum element in an iterator
- Arguments
src : iterator<auto(TT)>
- min(src: array<auto(TT)>) : TT()
Finds the minimum element in an array
- Arguments
src : array<auto(TT)>
- min_by(src: iterator<auto(TT)>; key: auto) : TT()
Finds the minimum element in an iterator by key
- Arguments
src : iterator<auto(TT)>
key : auto
- min_by(src: array<auto(TT)>; key: auto) : TT()
Finds the minimum element in an array by key
- Arguments
src : array<auto(TT)>
key : auto
- max(src: iterator<auto(TT)>) : TT()
Finds the maximum element in an iterator
- Arguments
src : iterator<auto(TT)>
- max(src: array<auto(TT)>) : TT()
Finds the maximum element in an array
- Arguments
src : array<auto(TT)>
- max_by(src: iterator<auto(TT)>; key: auto) : TT()
Finds the maximum element in an iterator by key
- Arguments
src : iterator<auto(TT)>
key : auto
- max_by(src: array<auto(TT)>; key: auto) : TT()
Finds the maximum element in an array by key
- Arguments
src : array<auto(TT)>
key : auto
- min_max(src: iterator<auto(TT)>) : tuple<TT;TT>()
Finds the minimum and maximum elements in an iterator
- Arguments
src : iterator<auto(TT)>
- min_max(src: array<auto(TT)>) : tuple<TT;TT>()
Finds the minimum and maximum elements in an array
- Arguments
src : array<auto(TT)>
- min_max_by(src: iterator<auto(TT)>; key: auto) : tuple<TT;TT>()
Finds the minimum and maximum elements in an iterator by key
- Arguments
src : iterator<auto(TT)>
key : auto
- min_max_by(src: array<auto(TT)>; key: auto) : tuple<TT;TT>()
Finds the minimum and maximum elements in an array by key
- Arguments
src : array<auto(TT)>
key : auto
- aggregate(src: iterator<auto(TT)>; seed: auto(AGG); func: block<(acc:AGG;x:TT):AGG>) : AGG()
Aggregates elements in an iterator using a seed and a function
- Arguments
src : iterator<auto(TT)>
seed : auto(AGG)
func : block<(acc:AGG;x:TT):AGG>
- aggregate(src: array<auto(TT)>; seed: auto(AGG); func: block<(acc:AGG;x:TT):AGG>) : AGG()
Aggregates elements in an array using a seed and a function
- Arguments
src : array<auto(TT)>
seed : auto(AGG)
func : block<(acc:AGG;x:TT):AGG>
- sum(src: iterator<auto(TT)>) : TT()
Sums elements in an iterator
- Arguments
src : iterator<auto(TT)>
- sum(src: array<auto(TT)>) : TT()
Sums elements in an array
- Arguments
src : array<auto(TT)>
- average(src: iterator<auto(TT)>) : TT()
Averages elements in an iterator
- Arguments
src : iterator<auto(TT)>
- average(src: array<auto(TT)>) : TT()
Averages elements in an array
- Arguments
src : array<auto(TT)>
- min_max_average(src: iterator<auto(TT)>) : tuple<TT;TT;TT>()
Finds the minimum, maximum, and average elements in an iterator
- Arguments
src : iterator<auto(TT)>
- min_max_average(src: array<auto(TT)>) : tuple<TT;TT;TT>()
Finds the minimum, maximum, and average elements in an array
- Arguments
src : array<auto(TT)>
- min_max_average_by(src: iterator<auto(TT)>; key: auto) : tuple<TT;TT;TT>()
Finds the minimum, maximum, and average elements in an iterator by key
- Arguments
src : iterator<auto(TT)>
key : auto
- min_max_average_by(src: array<auto(TT)>; key: auto) : tuple<TT;TT;TT>()
Finds the minimum, maximum, and average elements in an array by key
- Arguments
src : array<auto(TT)>
key : auto
56.6. Filtering data
- where_(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : iterator<TT>()
Filters elements in an iterator based on a predicate
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- where_(src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>()
Filters elements in an array based on a predicate
- Arguments
src : array<auto(TT)>
predicate : block<(arg:TT):bool>
- where_to_array(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>()
Filters elements in an iterator based on a predicate and returns an array
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
56.7. Partitioning data
skip_inplace (var arr: array<auto(TT)>; var total: int) : auto
skip (var src: iterator<auto(TT)>; var total: int) : iterator<TT>
skip_to_array (var src: iterator<auto(TT)>; var total: int) : array<TT>
skip_while (var src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : iterator<TT>
skip_while (src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>
skip_while_to_array (var src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>
take_inplace (var arr: array<auto(TT)>; var total: int) : auto
take (var src: iterator<auto(TT)>; var total: int) : iterator<TT>
take_to_array (var src: iterator<auto(TT)>; var total: int) : array<TT>
take (var src: iterator<auto(TT)>; from: range) : iterator<TT>
take_to_array (var src: iterator<auto(TT)>; from: range) : array<TT>
take_while (var src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : auto
take_while (src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>
take_while_to_array (var src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>
chunk_to_array (var src: iterator<auto(TT)>; size: int) : array<array<TT>>
chunk (var src: iterator<auto(TT)>; size: int) : iterator<array<TT>>
- skip(arr: array<auto(TT)>; total: int) : array<TT>()
Yields all but the first total elements
- Arguments
arr : array<auto(TT)>
total : int
- skip_inplace(arr: array<auto(TT)>; total: int) : auto()
Removes the first total elements from an array in place
- Arguments
arr : array<auto(TT)>
total : int
- skip(src: iterator<auto(TT)>; total: int) : iterator<TT>()
Yields all but the first total elements
- Arguments
src : iterator<auto(TT)>
total : int
- skip_to_array(src: iterator<auto(TT)>; total: int) : array<TT>()
Yields all but the first total elements and returns an array
- Arguments
src : iterator<auto(TT)>
total : int
- skip_while(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : iterator<TT>()
Skips all elements of an iterator while the predicate is true
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- skip_while(src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>()
Skips all elements of an array while the predicate is true
- Arguments
src : array<auto(TT)>
predicate : block<(arg:TT):bool>
- skip_while_to_array(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>()
Skips all elements of an iterator while the predicate is true and returns an array
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- take(arr: array<auto(TT)>; total: int) : array<TT>()
Yields only the first total elements
- Arguments
arr : array<auto(TT)>
total : int
- take_inplace(arr: array<auto(TT)>; total: int) : auto()
Keeps only the first total elements in an array in place
- Arguments
arr : array<auto(TT)>
total : int
- take(src: iterator<auto(TT)>; total: int) : iterator<TT>()
Yields only the first total elements
- Arguments
src : iterator<auto(TT)>
total : int
- take_to_array(src: iterator<auto(TT)>; total: int) : array<TT>()
Yields only the first total elements and returns an array
- Arguments
src : iterator<auto(TT)>
total : int
- take(src: iterator<auto(TT)>; from: range) : iterator<TT>()
Yields a range of elements from an iterator
- Arguments
src : iterator<auto(TT)>
from : range
- take(src: array<auto(TT)>; from: range) : array<TT>()
Yields a range of elements from an array
- Arguments
src : array<auto(TT)>
from : range
- take_to_array(src: iterator<auto(TT)>; from: range) : array<TT>()
Yields a range of elements from an iterator and returns an array
- Arguments
src : iterator<auto(TT)>
from : range
- take_inplace(arr: array<auto(TT)>; from: range) : auto()
Keeps only a range of elements in an array in place
- Arguments
arr : array<auto(TT)>
from : range
- take_while(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : auto()
Yields only the elements of an iterator while the predicate is true
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- take_while(src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>()
Yields only the elements of an array while the predicate is true
- Arguments
src : array<auto(TT)>
predicate : block<(arg:TT):bool>
- take_while_to_array(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : array<TT>()
Yields only the elements of an iterator while the predicate is true and returns an array
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- chunk(src: array<auto(TT)>; size: int) : array<array<TT>>()
Splits an array into chunks of a specified size
- Arguments
src : array<auto(TT)>
size : int
- chunk_to_array(src: iterator<auto(TT)>; size: int) : array<array<TT>>()
Splits an iterator into chunks of a specified size and returns an array
- Arguments
src : iterator<auto(TT)>
size : int
- chunk(src: iterator<auto(TT)>; size: int) : iterator<array<TT>>()
Splits an iterator into chunks of a specified size
- Arguments
src : iterator<auto(TT)>
size : int
56.8. Join and group operations
- join(srca: iterator<auto(TA)>; srcb: iterator<auto(TB)>; keya: auto; keyb: auto; result: auto) : iterator<typedecl(result(type<TA>,type<TB>))>()
Joins two iterators based on matching keys (inner join)
- Arguments
srca : iterator<auto(TA)>
srcb : iterator<auto(TB)>
keya : auto
keyb : auto
result : auto
- join(srca: array<auto(TA)>; srcb: array<auto(TB)>; keya: auto; keyb: auto; result: auto) : array<typedecl(result(type<TA>,type<TB>))>()
Joins two arrays based on matching keys (inner join)
- Arguments
srca : array<auto(TA)>
srcb : array<auto(TB)>
keya : auto
keyb : auto
result : auto
- join_to_array(srca: iterator<auto(TA)>; srcb: iterator<auto(TB)>; keya: auto; keyb: auto; result: auto) : array<typedecl(result(type<TA>,type<TB>))>()
Joins two iterators based on matching keys (inner join) and returns an array
- Arguments
srca : iterator<auto(TA)>
srcb : iterator<auto(TB)>
keya : auto
keyb : auto
result : auto
- group_join(srca: iterator<auto(TA)>; srcb: iterator<auto(TB)>; keya: auto; keyb: auto; result: auto) : iterator<typedecl(result(type<TA>,type<array<TB -const -&>>))>()
we pass TA, and sequence of TB to ‘result’
- Arguments
srca : iterator<auto(TA)>
srcb : iterator<auto(TB)>
keya : auto
keyb : auto
result : auto
- group_join(srca: array<auto(TA)>; srcb: array<auto(TB)>; keya: auto; keyb: auto; result: auto) : array<typedecl(result(type<TA>,type<array<TB -const -&>>))>()
we pass TA, and sequence of TB to ‘result’
- Arguments
srca : array<auto(TA)>
srcb : array<auto(TB)>
keya : auto
keyb : auto
result : auto
- group_join_to_array(srca: iterator<auto(TA)>; srcb: iterator<auto(TB)>; keya: auto; keyb: auto; result: auto) : array<typedecl(result(type<TA>,type<array<TB -const -&>>))>()
we pass TA, and sequence of TB to ‘result’
- Arguments
srca : iterator<auto(TA)>
srcb : iterator<auto(TB)>
keya : auto
keyb : auto
result : auto
- group_by(source: iterator<auto(TT)>; key: auto; element_selector: auto; result_selector: auto) : auto()
Groups the elements of an iterator according to a specified key selector function
- Arguments
source : iterator<auto(TT)>
key : auto
element_selector : auto
result_selector : auto
- group_by(source: array<auto(TT)>; key: auto; element_selector: auto; result_selector: auto) : auto()
Groups the elements of an array according to a specified key selector function
- Arguments
source : array<auto(TT)>
key : auto
element_selector : auto
result_selector : auto
- group_by_to_array(source: iterator<auto(TT)>; key: auto; element_selector: auto; result_selector: auto) : auto()
Groups the elements of an iterator according to a specified key selector function and returns an array
- Arguments
source : iterator<auto(TT)>
key : auto
element_selector : auto
result_selector : auto
56.9. Querying data
- any(src: array<auto(TT)>) : bool()
Returns true if the array has at least one element
- Arguments
src : array<auto(TT)>
- any(src: iterator<auto(TT)>) : bool()
Returns true if the iterator has at least one element
- Arguments
src : iterator<auto(TT)>
- any(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : bool()
Returns true if any element in the iterator satisfies the predicate
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- any(src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : bool()
Returns true if any element in the array satisfies the predicate
- Arguments
src : array<auto(TT)>
predicate : block<(arg:TT):bool>
- all(src: iterator<auto(TT)>; predicate: block<(arg:TT):bool>) : bool()
Returns true if all elements in the iterator satisfy the predicate
- Arguments
src : iterator<auto(TT)>
predicate : block<(arg:TT):bool>
- all(src: array<auto(TT)>; predicate: block<(arg:TT):bool>) : bool()
Returns true if all elements in the array satisfy the predicate
- Arguments
src : array<auto(TT)>
predicate : block<(arg:TT):bool>
- contains(src: iterator<auto(TT)>; element: TT) : bool()
Returns true if the element is present in the iterator
- Arguments
src : iterator<auto(TT)>
element : TT
- contains(src: array<auto(TT)>; element: TT) : bool()
Returns true if the element is present in the array
- Arguments
src : array<auto(TT)>
element : TT
56.10. Element operations
element_at_or_default (src: array<auto(TT)>; index: int) : TT
element_at_or_default (var src: iterator<auto(TT)>; index: int) : TT
first_or_default (src: array<auto(TT)>; defaultValue: TT) : TT
first_or_default (var src: iterator<auto(TT)>; defaultValue: TT) : TT
last_or_default (src: array<auto(TT)>; defaultValue: TT) : TT
last_or_default (var src: iterator<auto(TT)>; defaultValue: TT) : TT
single_or_default (src: array<auto(TT)>; defaultValue: TT) : TT
single_or_default (var src: iterator<auto(TT)>; defaultValue: TT) : TT
- element_at(src: array<auto(TT)>; index: int) : TT()
Returns the element at the specified index
- Arguments
src : array<auto(TT)>
index : int
- element_at(src: iterator<auto(TT)>; index: int) : TT()
Returns the element at the specified index
- Arguments
src : iterator<auto(TT)>
index : int
- element_at_or_default(src: array<auto(TT)>; index: int) : TT()
Returns the element at the specified index, or a default value if the index is out of range
- Arguments
src : array<auto(TT)>
index : int
- element_at_or_default(src: iterator<auto(TT)>; index: int) : TT()
Returns the element at the specified index, or a default value if the index is out of range
- Arguments
src : iterator<auto(TT)>
index : int
- first(src: array<auto(TT)>) : TT()
Returns the first element of an array
- Arguments
src : array<auto(TT)>
- first(src: iterator<auto(TT)>) : TT()
Returns the first element of an iterator
- Arguments
src : iterator<auto(TT)>
- first_or_default(src: array<auto(TT)>; defaultValue: TT) : TT()
Returns the first element of an array, or a default value if the array is empty
- Arguments
src : array<auto(TT)>
defaultValue : TT
- first_or_default(src: iterator<auto(TT)>; defaultValue: TT) : TT()
Returns the first element of an iterator, or a default value if the iterator is empty
- Arguments
src : iterator<auto(TT)>
defaultValue : TT
- last(src: array<auto(TT)>) : TT()
Returns the last element of an array
- Arguments
src : array<auto(TT)>
- last(src: iterator<auto(TT)>) : TT()
Returns the last element of an iterator
- Arguments
src : iterator<auto(TT)>
- last_or_default(src: array<auto(TT)>; defaultValue: TT) : TT()
Returns the last element of an array, or a default value if the array is empty
- Arguments
src : array<auto(TT)>
defaultValue : TT
- last_or_default(src: iterator<auto(TT)>; defaultValue: TT) : TT()
Returns the last element of an iterator, or a default value if the iterator is empty
- Arguments
src : iterator<auto(TT)>
defaultValue : TT
- single(src: array<auto(TT)>) : TT()
Returns the only element of an array, and throws if there is not exactly one element
- Arguments
src : array<auto(TT)>
- single(src: iterator<auto(TT)>) : TT()
Returns the only element of an iterator, and throws if there is not exactly one element
- Arguments
src : iterator<auto(TT)>
- single_or_default(src: array<auto(TT)>; defaultValue: TT) : TT()
Returns the only element of an array, or a default value if there is not exactly one element
- Arguments
src : array<auto(TT)>
defaultValue : TT
- single_or_default(src: iterator<auto(TT)>; defaultValue: TT) : TT()
Returns the only element of an iterator, or a default value if there is not exactly one element
- Arguments
src : iterator<auto(TT)>
defaultValue : TT
56.11. Transform operations
select (var src: iterator<auto(TT)>) : iterator<tuple<int;TT>>
select_to_array (var src: iterator<auto(TT)>) : array<tuple<int;TT>>
select (src: array<auto(TT)>; result_selector: auto) : array<typedecl(result_selector(type<TT>))>
zip (var a: iterator<auto(TT)>; var b: iterator<auto(UU)>) : iterator<tuple<TT;UU>>
zip (a: array<auto(TT)>; b: array<auto(UU)>) : array<tuple<TT;UU>>
zip_to_array (var a: iterator<auto(TT)>; var b: iterator<auto(UU)>) : array<tuple<TT;UU>>
- select(src: iterator<auto(TT)>) : iterator<tuple<int;TT>>()
Projects each element of an iterator into a new form
- Arguments
src : iterator<auto(TT)>
- select(src: array<auto(TT)>) : array<tuple<int;TT>>()
Projects each element of an array into a new form
- Arguments
src : array<auto(TT)>
- select_to_array(src: iterator<auto(TT)>) : array<tuple<int;TT>>()
Projects each element of an iterator into a new form and returns an array
- Arguments
src : iterator<auto(TT)>
- select(src: iterator<auto(TT)>; result_selector: auto) : iterator<typedecl(result_selector(type<TT>))>()
Projects each element of an iterator into a new form using a selector function
- Arguments
src : iterator<auto(TT)>
result_selector : auto
- select(src: array<auto(TT)>; result_selector: auto) : array<typedecl(result_selector(type<TT>))>()
Projects each element of an array into a new form using a selector function
- Arguments
src : array<auto(TT)>
result_selector : auto
- select_to_array(src: iterator<auto(TT)>; result_selector: auto) : array<typedecl(result_selector(type<TT>))>()
Projects each element of an iterator into a new form using a selector function and returns an array
- Arguments
src : iterator<auto(TT)>
result_selector : auto
- select_many(src: iterator<auto(TT)>; result_selector: auto) : iterator<typedecl(result_selector(iter_type(type<TT>)))>()
Projects each element of an iterator to an iterator and flattens the resulting iterators into one iterator
- Arguments
src : iterator<auto(TT)>
result_selector : auto
- select_many(src: array<auto(TT)>; result_selector: auto) : array<typedecl(result_selector(iter_type(type<TT>)))>()
Projects each element of an array to an iterator and flattens the resulting iterators into one array
- Arguments
src : array<auto(TT)>
result_selector : auto
- select_many_to_array(src: iterator<auto(TT)>; result_selector: auto) : array<typedecl(result_selector(iter_type(type<TT>)))>()
Projects each element of an iterator to an iterator and flattens the resulting iterators into one array
- Arguments
src : iterator<auto(TT)>
result_selector : auto
- select_many(src: iterator<auto(TT)>; collection_selector: auto; result_selector: auto) : iterator<typedecl(result_selector(iter_type(collection_selector(type<TT>))))>()
Projects each element of an iterator to an iterator and flattens the resulting iterators into one iterator
- Arguments
src : iterator<auto(TT)>
collection_selector : auto
result_selector : auto
- select_many(src: array<auto(TT)>; collection_selector: auto; result_selector: auto) : array<typedecl(result_selector(iter_type(collection_selector(type<TT>))))>()
Projects each element of an array to an iterator and flattens the resulting iterators into one array
- Arguments
src : array<auto(TT)>
collection_selector : auto
result_selector : auto
- select_many_to_array(src: iterator<auto(TT)>; collection_selector: auto; result_selector: auto) : array<typedecl(result_selector(iter_type(collection_selector(type<TT>))))>()
Projects each element of an iterator to an iterator and flattens the resulting iterators into one array
- Arguments
src : iterator<auto(TT)>
collection_selector : auto
result_selector : auto
- zip(a: iterator<auto(TT)>; b: iterator<auto(UU)>) : iterator<tuple<TT;UU>>()
Merges two iterators into an iterator of tuples
- Arguments
a : iterator<auto(TT)>
b : iterator<auto(UU)>
- zip(a: array<auto(TT)>; b: array<auto(UU)>) : array<tuple<TT;UU>>()
Merges two arrays into an array of tuples
- Arguments
a : array<auto(TT)>
b : array<auto(UU)>
- zip_to_array(a: iterator<auto(TT)>; b: iterator<auto(UU)>) : array<tuple<TT;UU>>()
Merges two iterators into an array of tuples
- Arguments
a : iterator<auto(TT)>
b : iterator<auto(UU)>
- zip(a: iterator<auto(TT)>; b: iterator<auto(UU)>; result_selector: block<(l:TT;r:UU):auto>) : iterator<typedecl(result_selector(type<TT>,type<UU>))>()
Merges two iterators into an iterator by applying a specified function
- Arguments
a : iterator<auto(TT)>
b : iterator<auto(UU)>
result_selector : block<(l:TT;r:UU):auto>
- zip(a: array<auto(TT)>; b: array<auto(UU)>; result_selector: block<(l:TT;r:UU):auto>) : array<typedecl(result_selector(type<TT>,type<UU>))>()
Merges two arrays into an array by applying a specified function
- Arguments
a : array<auto(TT)>
b : array<auto(UU)>
result_selector : block<(l:TT;r:UU):auto>
- zip_to_array(a: iterator<auto(TT)>; b: iterator<auto(UU)>; result_selector: block<(l:TT;r:UU):auto>) : array<typedecl(result_selector(type<TT>,type<UU>))>()
Merges two iterators into an array by applying a specified function
- Arguments
a : iterator<auto(TT)>
b : iterator<auto(UU)>
result_selector : block<(l:TT;r:UU):auto>
56.12. Convertion operations
- to_sequence(a: array<auto(TT)>) : iterator<TT>()
Converts an array to an iterator
- Arguments
a : array<auto(TT)>
- to_sequence_move(a: array<auto(TT)>) : iterator<TT>()
Converts an array to an iterator, captures input
- Arguments
a : array<auto(TT)>
- to_table(a: iterator<auto(TT)>; key: block<(v:TT):auto>; elementSelector: block<(v:TT):auto>) : table<typedecl(_::unique_key(type<TT>)), typedecl(elementSelector(type<TT>))>()
Converts an iterator to a table
- Arguments
a : iterator<auto(TT)>
key : block<(v:TT):auto>
elementSelector : block<(v:TT):auto>
- to_table(a: array<auto(TT)>; key: block<(v:TT):auto>; elementSelector: block<(v:TT):auto>) : table<typedecl(_::unique_key(type<TT>)), typedecl(elementSelector(type<TT>))>()
Converts an array to a table
- Arguments
a : array<auto(TT)>
key : block<(v:TT):auto>
elementSelector : block<(v:TT):auto>
56.13. Comparators and keys
less (a: tuple<auto(TT);auto(UU)>; b: tuple<auto(TT);auto(UU)>) : bool
less (a: tuple<auto(TT);auto(UU);auto(VV)>; b: tuple<auto(TT);auto(UU);auto(VV)>) : bool
sequence_equal (var first: iterator<auto(TT)>; var second: iterator<auto(TT)>) : bool
sequence_equal (first: array<auto(TT)>; second: array<auto(TT)>) : bool
- less(a: auto; b: auto) : bool()
Compares two values, returns true if first is less than second
- Arguments
a : auto
b : auto
- less(a: tuple<auto(TT)>; b: tuple<auto(TT)>) : bool()
Compares two tuples, returns true if first is less than second
- Arguments
a : tuple<auto(TT)>
b : tuple<auto(TT)>
- less(a: tuple<auto(TT);auto(UU)>; b: tuple<auto(TT);auto(UU)>) : bool()
Compares two tuples, returns true if first is less than second
- Arguments
a : tuple<auto(TT);auto(UU)>
b : tuple<auto(TT);auto(UU)>
- less(a: tuple<auto(TT);auto(UU);auto(VV)>; b: tuple<auto(TT);auto(UU);auto(VV)>) : bool()
Compares two tuples, returns true if first is less than second
- Arguments
a : tuple<auto(TT);auto(UU);auto(VV)>
b : tuple<auto(TT);auto(UU);auto(VV)>
- less(a: tuple<auto(TT);auto(UU);auto(VV);auto(WW)>; b: tuple<auto(TT);auto(UU);auto(VV);auto(WW)>) : bool()
Compares two tuples, returns true if first is less than second
- Arguments
a : tuple<auto(TT);auto(UU);auto(VV);auto(WW)>
b : tuple<auto(TT);auto(UU);auto(VV);auto(WW)>
- sequence_equal(first: iterator<auto(TT)>; second: iterator<auto(TT)>) : bool()
Checks if two sequences are equal
- Arguments
first : iterator<auto(TT)>
second : iterator<auto(TT)>
- sequence_equal(first: array<auto(TT)>; second: array<auto(TT)>) : bool()
Checks if two arrays are equal
- Arguments
first : array<auto(TT)>
second : array<auto(TT)>
- sequence_equal_by(first: iterator<auto(TT)>; second: iterator<auto(TT)>; key: block<(arg:TT):auto>) : bool()
Checks if two sequences are equal by key
- Arguments
first : iterator<auto(TT)>
second : iterator<auto(TT)>
key : block<(arg:TT):auto>
- sequence_equal_by(first: array<auto(TT)>; second: array<auto(TT)>; key: block<(arg:TT):auto>) : bool()
Checks if two arrays are equal by key
- Arguments
first : array<auto(TT)>
second : array<auto(TT)>
key : block<(arg:TT):auto>