2012-03-07 29 views
8

Jaki jest obecny stan wdrożenia Optymalizacji połączeń końcowych (TCO) w Mono (2.11)? Przeczytaj gdzieś, że cała baza kodów musiałaby zostać zmodyfikowana, aby użyć konwencji callee-pops-arguments. Jaki jest status tej zmiany? Czy port ARM/Linux jest aktualny w tej sprawie?Jaki jest obecny stan optymalizacji wywołań końcowych dla F # on Mono (2.11)?

Dzięki!

+2

Myślę, że prawdopodobnie chcesz zmienić tytuł swojego pytania - F # w ogóle działa na Mono. Pytasz o jedną cechę F # - ważną funkcję, którą przyznaję, ale wciąż tylko jedną część F #. –

+0

Mam program combinator parser, który działa na .NET i kończy się niepowodzeniem na Mono 2.10.8. Postaram się przetestować 2.11 wkrótce – t0yv0

Odpowiedz

3

Tail połączeń zdecydowanie pracować na mono na linux - przetestowane przy użyciu

let rec f a = f (a+1) 

które nie crash - testowane na Mono 2.10.2

UPDATE

Testowane z linku z Brianem - https://bugzilla.novell.com/show_bug.cgi?id=476785

który zawiesza się w Mono 2.10.2 pomimo generowania instrukcji .tail

+1

Kompilator F # konwertuje bezpośrednią rekursję do pętli. Użyj dwóch wzajemnie rekursywnych funkcji do przetestowania. – Brian

+0

@Brian - sprawdziłam, czy masz demontować - masz rację, czy masz dobry przykładowy program, który generuje instrukcje ".tail" –

+1

@JohnPalmer: Spróbuj [tego przykładu] (https://bugzilla.novell.com/show_bug.cgi? id = 476785). Nie sądzę, że zostało to naprawione w Mono 2.10. – pad