J'ai écrit la fonction follwing:Comment puis-je savoir si une fonction est récursive queue F #
let str2lst str =
let rec f s acc =
match s with
| "" -> acc
| _ -> f (s.Substring 1) (s.[0]::acc)
f str []
Comment puis-je savoir si le compilateur F # a transformé en une boucle? Y at-il un moyen de le savoir sans utiliser Reflector (je n'ai aucune expérience avec Reflector et je ne sais pas C#)?
Éditer: Aussi, est-il possible d'écrire une fonction récursive de queue sans utiliser une fonction interne, ou est-il nécessaire pour la boucle de résider?
De même, existe-t-il une fonction dans F # std lib pour exécuter une fonction donnée un certain nombre de fois, en lui donnant à chaque fois la dernière sortie en entrée? Disons que j'ai une chaîne, je veux exécuter une fonction sur la chaîne puis l'exécuter à nouveau sur la chaîne résultante et ainsi de suite ...
Voir aussi http://stackoverflow.com/questions/5809683/is-my-rec-function-tail-recursive – Brian