title: F#: let mutable vs. ref
body: <p>First, I acknowledge the possibility that this question could be a duplicate; just let me know.</p>
  
  <p>I'm curious what the general "best practice" is for those situations when mutability is desired. F# seems to offer two facilities for this: the <code>let mutable</code> binding, which seems to work like variables in "most" languages, and the reference cell (created with the <code>ref</code> function) that requires explicit dereferencing to use.</p>
  
  <p>There are a couple of cases where one is "forced" into one or the other: .NET interop tends to use mutable with <code>&lt;-</code>, and in workflow computations one must use <code>ref</code> with <code>:=</code>. So those cases are pretty clear-cut, but I'm curious what to do when creating my own mutable variables outside of those scenarios. What advantage does one style have over the other? (Perhaps further insight into the implementation would help.)</p>
  
  <p>Thanks!</p>