title: Ways to get the middle of a list in Haskell?
body: <p>I've just started learning about Functional Programming, using Haskel.</p>
  
  <p>I'm slowly getting through <a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" rel="noreferrer">Erik Meijer's lectures on Channel 9</a> (I've watched the first 4 so far) and in the 4th video Erik explains how tail works, and it fascinated me.</p>
  
  <p>I've tried to write a function that returns the middle of a list (2 items for even lengths, 1 for odd) and I'd like to hear how others would implement it in</p>
  
  <ul>
  <li>The least amount of Haskell code</li>
  <li>The fastest Haskell code</li>
  </ul>
  
  <p>If you could explain your choices I'd be very grateful.</p>
  
  <p>My beginners code looks like this:</p>
  
  <pre><code>middle as | length as &gt; 2   = middle (drop 2 (reverse as))
            | otherwise       = as
  </code></pre>