ich die follwing Funktion schrieb:Wie erkenne ich, ob eine Funktion Schwanz rekursiv in F # ist
let str2lst str =
let rec f s acc =
match s with
| "" -> acc
| _ -> f (s.Substring 1) (s.[0]::acc)
f str []
Wie kann ich wissen, ob die F # -Compiler es in eine Schleife gedreht? Gibt es eine Möglichkeit, es herauszufinden, ohne Reflektor zu benutzen (ich habe keine Erfahrung mit Reflektoren und ich kenne C# nicht)?
Edit: Ist es auch möglich, eine Tail-rekursive Funktion zu schreiben, ohne eine innere Funktion zu benutzen, oder ist es notwendig, dass die Schleife sich befindet?
Gibt es auch eine Funktion in F # std lib, um eine bestimmte Funktion mehrmals auszuführen und jedes Mal die letzte Ausgabe als Eingabe zu geben? Sagen wir, ich habe eine Zeichenkette, ich möchte eine Funktion über die Zeichenkette ausführen und sie dann erneut über die resultierende Zeichenkette usw. ausführen ...
Siehe auch http://stackoverflow.com/questions/5809683/is-my-rec-function-tail-recursive – Brian