title: Removing n number of elements from a list
body: <p>One of my modules this year is Haskell programming. I'm having trouble expressing complexity in such a simple manner, especially coming from other languages such as C#.</p>
  
  <p>Part of the familiarisation process involves us implementing a drop' function which removes n number of elements from a list.</p>
  
  <p><strong>Write a function drop’ :: Int -> [a] -> [a], where drop’ n xs returns xs with its first n elements removed.</strong></p>
  
  <p>So far, what I have come up with is this.</p>
  
  <pre><code>drop' :: Int -&gt; [a] -&gt; [a]
  drop' x [] = []
  drop' x (y : ys) = if x == 0 then ys else drop' (x-1) ys  
  </code></pre>
  
  <p>I know I need to recursively call drop' on the tail of the list to effectively remove an element but I don't know how to keep a count of how many elements I have removed so I can ensure I remove n elements.</p>
  
  <p>I know the above doesn't give me the result I was expecting as it removes 1 more than I expect, but interestingly this works:</p>
  
  <pre><code>drop' :: Int -&gt; [a] -&gt; [a]
  drop' x [] = []
  drop' x (y : ys) = if x == 1 then ys else drop' (x-1) ys
  </code></pre>
  
  <p>And I cannot deduce why! Any help with the logic of this would be greatly appreciated!</p>