me escribió la función siguientes aparatos:¿Cómo puedo saber si una función es recursiva cola en Fa #
let str2lst str =
let rec f s acc =
match s with
| "" -> acc
| _ -> f (s.Substring 1) (s.[0]::acc)
f str []
¿Cómo puedo saber si el F # compilador lo convirtió en un bucle? ¿Hay alguna manera de averiguarlo sin usar Reflector (no tengo experiencia con Reflector y no sé C#)?
Editar: Además, ¿es posible escribir una función recursiva de cola sin usar una función interna, o es necesario que resida el bucle?
Además, ¿existe una función en F # std lib para ejecutar una función determinada varias veces, dando cada vez el último resultado como entrada? Digamos que tengo una cadena, quiero ejecutar una función sobre la cadena y luego ejecutarla de nuevo sobre la cadena resultante y así sucesivamente ...
Véase también http://stackoverflow.com/questions/5809683/is-my-rec-function-tail-recursive – Brian