Ich würde gerne die .tail
IL-Anweisung sehen, aber die einfachen rekursiven Funktionen mit Tail-Calls, die ich geschrieben habe, sind anscheinend in Schleifen optimiert. Ich schätze das, da ich mir nicht ganz sicher bin, wie eine Schleife in Reflector aussieht. Ich sehe definitiv keine .tail
Opcodes. Ich habe "Tail Calls generieren" in den Eigenschaften meines Projekts aktiviert. Ich habe auch versucht, Debug und Release Builds in Reflector.Was ist ein einfacher F # Code, der den .tail IL Befehl erzeugt?
Der Code, den ich verwendet wird, ist von Programming F# by Chris Smith, Seite 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
Kann jemand etwas einfach F # -Code vorschlagen, die .tail
tatsächlich generieren?
Ich habe gerade jetzt überprüft. Ja! es erzeugt .tail. –