Chciałbym zobaczyć instrukcję IL z .tail
, ale proste funkcje rekursywne wykorzystujące połączenia ogona, które pisałem, są najwyraźniej zoptymalizowane w pętle. Zgaduję, że tak, ponieważ nie jestem całkiem pewien, jak wygląda pętla w Reflectorze. Zdecydowanie nie widzę jednak żadnych kodów opcyjnych .tail
. Mam "Generuj wywołania ogona" sprawdzone we właściwościach mojego projektu. Próbowałem również obu wersji debugowania i wydania w Reflectorze.Jaki jest prosty kod F #, który generuje instrukcję .tail IL?
Kod użyłem jest od Programming F# by Chris Smith, strona 190:
let factorial x =
// Keep track of both x and an accumulator value (acc)
let rec tailRecursiveFactorial x acc =
if x <= 1 then
acc
else
tailRecursiveFactorial (x - 1) (acc * x)
tailRecursiveFactorial x 1
Czy ktoś może sugerować jakąś prostą F # kod, który rzeczywiście przyniesie .tail
?
Sprawdziłem przed chwilą. Tak! generuje .tail. –