title: No instance of (Eq ([a] -> [a])) when pattern matching a list of functions
body: <p>Consider the following code:</p>
  <pre class="lang-hs prettyprint-override"><code>step :: [[a] -&gt; [a]] -&gt; [[a]] -&gt; [[a]]
  step (f:fs) xss
    | (fs == []) = yss
    | otherwise = step fs yss
    where yss = map f xss
  </code></pre>
  <p>It throws the following error:</p>
  <pre><code>No instance for (Eq ([a] -&gt; [a])) arising from a use of ‘==’
    (maybe you haven't applied a function to enough arguments?)
  
    |
  3 |   | (fs == []) = res
    |      ^^^^^^^^
  </code></pre>
  <p><code>fs</code> <em>should be</em> either a list of functions or an empty list, so why is the compiler trying to make a function out of it?</p>