Rekursion

Syntax

	$start.recursion($fun)

$start.recursion($fun, $min-depth, $max-depth)

Beschreibung

Erstellt eine Liste, indem die Funktion fun auf jedes Element der Menge start angewendet wird und rekursiv auf alle ihre Funktionsergebnisse. Die Rekursion endet, wenn die Funktion null, oder ein vorheriges Ergebnis erneut erzeugt. Im Auswertungsergebnis werden nur die Elemente zurückgegeben, die sich aus Rekursionstiefen zwischen min-depth (inklusive) und max-depth (exklusiv) ergeben.

Parameter

Name Typ Beschreibung Pflicht Default
start Zahl/Zeichenkette/Wahrheitswert/Fachobjekt/Menge Der Startwert, bzw. die Startwerte der Rekurssion, wenn sie in einer Menge angegeben werden. ja
fun Funktion Eine Funktion, die rekursiv auf start und die daraus resultierenden Ergebnisse ausgeführt werden soll. ja
min-depth Zahl Die minimale Rekursionstiefe (inklusiv). nein 0
max-depth Zahl Die maximale Rekursionstiefe (exklusiv). nein -1 (unendlich)

Rückgabewert

Typ: Menge

Eine Menge bestehend aus start und allen Funktionsergebnissen ab einer minimalen bis zu einer maximalen Rekursionstiefe.

Beispiele

Hochzählen

	1.recursion(x -> $x + 1, 0, 9)

Ausgabe: Eine Menge mit den Werten [1, 2, 3, 4, 5, 6, 7, 8, 9].

Ausgehend von 1 wird die Funktion, die einen Wert um 1 erhöht 9 mal angewendet. Alle Ergebnisse werden in der Ergebnisliste zurückgegeben.

Achtung: Dasselbe Ergebnis kann über den Ausdruck count(1, 10) wesentlich einfacher und effizienter erreicht werden, siehe Aufzählung.

Pfade

	$x.recursion(node -> $node.get(`my:Type#parent`), 1)

Ausgabe: Der Pfad ausgehend von einem Element in der Variablen x bis zur Wurzel eines Baumes entlang des Elternattributs my:Type#parent.

Der Pfad beginnt mit dem direkten Elternteil von x. Der Wert von x ist selbst nicht im Pfad enthalten, weil die minimale Tiefe (Anzahl der Funktionsanwendungen) auf 1 eingestellt ist.