title: Why does functor composition on an empty list return a Show error?
body: <p>When calling the following, GHCI returns an error:
  Ambiguous type variables ‘f0’, ‘b0’ arising from a use of ‘print’ prevents the constraint ‘(Show (f0 b0))’ from being solved.</p>
  
  <p>From what I understand, this is because the type of my Expression is (Num b, Functor f) => [f b] where f is the ambiguous type.</p>
  
  <p>However, the Functor instance of List defines fmap as map, and the definition of map ignores the function argument in case the second argument is [] to simply return []. This should mean that my expression should simply return [] regardless of how many fmap compositions I apply, and a call to show [] should go through. Why is it that I see the error then?</p>
  
  <pre class="lang-hs prettyprint-override"><code>(fmap.fmap) (+1) []
  </code></pre>