title: Reverse range implementation
body: <p>For the record, I'm a Haskell noob. I'm trying to understand why a range can be declared as </p>
  
  <pre><code>[1..10] -- yields [1,2,3,4,5,6,7,8,9,10]
  </code></pre>
  
  <p>and not</p>
  
  <pre><code>[10..1] -- yields []
  </code></pre>
  
  <p>It seems simple enough to implement it like this:</p>
  
  <pre><code>(.:.) :: Enum a =&gt; a -&gt; a -&gt; [a]
  (.:.) a b =
     | a == b = []
     | a &gt; b = a : (a - 1) .:. b
     | a &lt; b = a : (a + 1) .:. b
  </code></pre>
  
  <p>What am I not understanding here?</p>