So che questo è un po 'il contrario del problema che le persone stanno avendo quando fanno domande su un problema di overflow dello stack, ma se creo una funzione e la chiamo come segue, non ricevo mai errori e l'applicazione macina semplicemente un core della mia CPU fino a quando ho forzare lo spegnimento è:Perché la ricorsione infinita non ha colpito un'eccezione di overflow dello stack in F #?
let rec recursionTest x =
recursionTest x
recursionTest 1
Certo che posso cambiare questo in modo che in realtà fa qualcosa di simile:
let rec recursionTest (x: uint64) =
recursionTest (x + 1UL)
recursionTest 0UL
in questo modo posso ogni tanto mettere un punto di interruzione nel mio codice e vedere il valore di x sta salendo piuttosto rapidamente, ma non si lamenta ancora. A F # non interessa la ricorsione infinita?
Grazie, ciò ha anche spiegato una domanda non menzionata sul motivo per cui VS non stava visualizzando più chiamate nella finestra dello stack di chiamate. – Amazingant
In effetti credo che in questo caso il compilatore F # convertirà effettivamente il codice in un ciclo - non c'è in realtà alcuna ricorsione nel codice compilato. –