title: Getting even and odd position of elements in list - Haskell Mutual Recursion
body: <p>I recently started learning Haskell. </p>
  
  <p>I found this code online which returns the elements at all even/odd positions of a list.</p>
  
  <p>It makes use of mutual recursion, but I cannot seem to understand how it works internally.</p>
  
  <pre><code>evens (x:xs) = x:odds xs
  evens _ = []
  
  odds (_:xs) = evens xs
  odds _ = []
  </code></pre>
  
  <p><strong>In particular, I don't understand how the list is moving forward and evaluating all elements. How does it check for even positions even though there is no explicit index checking</strong></p>
  
  <p>Would someone be able to provide insight?</p>