title: Why can't I write a general function to check if two lists are equal?
body: <p>I am learning Haskell and I don't understand why I can do this:</p>
  
  <pre><code>f :: [Int] -&gt; Bool
  f l  
      | l==l = True
      | otherwise = False
  </code></pre>
  
  <p>But I can't do this.</p>
  
  <pre><code>f :: [a] -&gt; Bool
  f l  
      | l==l = True
      | otherwise = False
  </code></pre>
  
  <p>What's going on under the hood?</p>