2012-03-07 17 views
8

Qual è lo stato attuale dell'implementazione del TCO (tail call optimization) su Mono (2.11)? Leggi da qualche parte che tutti i codebase dovrebbero essere modificati per usare una convenzione di argomenti callee-pops. Qual è lo stato di questo cambiamento? La porta ARM/Linux è aggiornata su questo argomento?Qual è lo stato corrente dell'ottimizzazione chiamata di coda per F # su Mono (2.11)?

Grazie!

+2

Penso che probabilmente vorrai cambiare il titolo della tua domanda - F # in generale funziona su Mono. Mi stai chiedendo di una funzione di F # - una funzione importante che concedo ma ancora solo una parte di F #. –

+0

Ho un programma di combinatore di parser che funziona su .NET e fallisce su Mono 2.10.8. Proverò a provare su 2.11 in breve – t0yv0

risposta

3

Coda chiamate sicuramente lavorare su mono su Linux - testati utilizzando

let rec f a = f (a+1) 

che non in crash - testato su Mono 2.10.2

UPDATE

testato con collegamento da Brian - https://bugzilla.novell.com/show_bug.cgi?id=476785

che si arresta su Mono 2.10.2 nonostante la generazione di .tail istruzioni

+1

Il compilatore F # converte la ricorsione diretta in un ciclo. Utilizzare due funzioni reciprocamente ricorsive per testare. – Brian

+0

@Brian - ha controllato il disassemblaggio - sei corretto, hai un buon esempio di programma che genera le istruzioni '.tail' –

+1

@JohnPalmer: Prova [questo esempio] (https://bugzilla.novell.com/show_bug.cgi? id = 476.785). Non penso sia stato corretto in Mono 2.10. – pad

Problemi correlati