Mi piace definire sequenze in modo ricorsivo come segue:Le sequenze ricorsive perdono memoria?
let rec startFrom x =
seq {
yield x;
yield! startFrom (x + 1)
}
io non sono sicuro se le sequenze ricorsive come questo dovrebbero essere utilizzati nella pratica. Il yield!
appare come coda ricorsiva, ma non sono sicuro al 100% dal momento che viene chiamato da un altro IEnumerable. Dal mio punto di vista, il codice crea un'istanza di IEnumerable su ogni chiamata senza chiuderla, il che in realtà renderebbe questa funzione anche una perdita di memoria.
Sarà questo perdita di memoria funzione? Del resto è anche "coda ricorsiva"?
[Modifica per aggiungere]: Sto cercando a tentoni con NProf per una risposta, ma penso che sarebbe utile ottenere una spiegazione tecnica riguardante l'implementazione di sequenze ricorsive su SO.
>> "Purtroppo, non ho esperienza di profiler, quindi posso trovo la risposta da sola. " Una specie di scherzo? Come si fa esperienza? – user79755
Per ora sto guardando NProf in questo momento, ma spero di ottenere una risposta più rapida e una spiegazione tecnica su SO. – Juliet