title: How do I know if a function is tail recursive in F#
body: <p>I wrote the follwing function:</p>
  
  <pre><code>let str2lst str =
      let rec f s acc =
        match s with
          | "" -&gt; acc
          | _  -&gt; f (s.Substring 1) (s.[0]::acc)
      f str []
  </code></pre>
  
  <p>How can I know if the F# compiler turned it into a loop? Is there a way to find out without using Reflector (I have no experience with Reflector and I Don't know C#)?</p>
  
  <p>Edit: Also, is it possible to write a tail recursive function without using an inner function, or is it necessary for the loop to reside in?</p>
  
  <p>Also, Is there a function in F# std lib to run a given function a number of times, each time giving it the last output as input? Lets say I have a string, I want to run a function over the string then run it again over the resultant string and so on...</p>