Recursion
Syntax
$start.recursion($fun)
$start.recursion($fun, $min-depth, $max-depth)
Description
Creates a list by applying the function fun
to each element of the set start
and recursively to all its function results. The recursion ends when the function null
, or a previous result is regenerated. Only the elements resulting from recursion depths between min-depth
(inclusive) and max-depth
(exclusive) are returned in the evaluation result.
Parameter
Name | Type | Description | Mandatory | Default |
---|---|---|---|---|
start | number/string/boolean/business object/set | The start value, or the start values of the recursion if specified in a set. | yes | |
fun | Function | A function to be executed recursively on start and the resulting results. |
yes | |
min-depth | Number | The minimum recursion depth (inclusive). | no | 0 |
max-depth | Number | The maximum recursion depth (exclusive). | no | -1 (infinite) |
Return value
Type: Set
A set consisting of start
and all function results from a minimum to a maximum recursion depth.
Examples
Count up
1.recursion(x -> $x + 1, 0, 9)
Output: A set with values [1, 2, 3, 4, 5, 6, 7, 8, 9].
Starting from 1, the function that increments a value by 1 is applied 9 times. All results are returned in the result list.
Note: The same result can be achieved much easier and more efficiently using the expression count(1, 10)
, see Count.
Paths
$x.recursion(node -> $node.get(`my:Type#parent`), 1)
Output: The path starting from an element in the variable x
to the root of a tree along the parent attribute my:Type#parent
.
The path starts with the direct parent of x
. The value of x
is not itself included in the path because the minimum depth (number of function applications) is set to 1
.