Ich mag Sequenzen rekursiv wie folgt definieren:Führen rekursive Sequenzen Speicherverlust aus?
let rec startFrom x =
seq {
yield x;
yield! startFrom (x + 1)
}
Ich bin nicht sicher, ob rekursive Sequenzen wie diese sollten in der Praxis verwendet werden. Die yield!
erscheint, um rekursiv zu sein, aber ich bin nicht 100% sicher, da es von einem anderen IEnumerable aufgerufen wird. Aus meiner Sicht erstellt der Code bei jedem Aufruf eine Instanz von IEnumerable, ohne sie zu schließen, wodurch diese Funktion tatsächlich ebenfalls Speicher verliert.
Wird diese Funktion Leckspeicher? Ist es überhaupt "rekursiv"?
[Bearbeiten, um hinzuzufügen]: Ich fummle herum mit Nprof für eine Antwort, aber ich denke, es wäre hilfreich, eine technische Erklärung über die Implementierung von rekursiven Sequenzen auf SO zu erhalten.
>> "Leider habe ich keine Profiler-Erfahrung, also kann ich Finde die Antwort nicht selbst heraus. " Irgendeine Art von Witz? Wie bekommt man Erfahrung? – user79755
Für die Aufnahme schaue ich gerade auf Nprof, aber ich hoffe, eine schnellere Antwort und eine technische Erklärung über SO zu bekommen. – Juliet