title: Ranges A to B where A > B in F#
body: <p>I've just found something I'd call a quirk in F# and would like to know whether it's by design or by mistake and if it's by design, why is it so...
  If you write any range expression where the first term is greater than the second term the returned sequence is empty. A look at reflector suggests this is by design, but I can't really find a reason why it would have to be so.
  An example to reproduce it is:</p>
  
  <pre><code>
  [1..10] |> List.length
  [10..1] |> List.length
  </code></pre>
  
  <p>The first will print out 10 while the second will print out 0.
  Tests were made in F# CTP 1.9.6.2.</p>
  
  <p><strong>EDIT</strong>: thanks for suggesting expliciting the range, but there's still one case (which is what inspired me to ask this question) that won't be covered. What if A and B are variables and none is constantly greater than the other although they're always different?
  Considering that the range expression does not seem to get optimized at compiled time anyway, is there any good reason for the code which determines the step (not explicitly specified) in case A and B are ints not to allow negative steps?</p>