title: Why fmap doesn't work for a tuple?
body: <p>In the below, I tried to use <code>fmap</code> on a tuple, but this didn't work, although it worked for a list and <code>Just 4</code>:</p>
  
  <pre><code>Prelude&gt; fmap (+3) (Just 4)
  Just 7
  Prelude&gt; fmap (+3) [1,2,3,4]
  [4,5,6,7]
  Prelude&gt; fmap (+3) (10,11,12,13,14)
  
  &lt;interactive&gt;:38:1: error:
      * Non type-variable argument
          in the constraint: Functor ((,,,,) a b1 c d)
        (Use FlexibleContexts to permit this)
      * When checking the inferred type
          it :: forall a b1 c d b2.
                (Num d, Num c, Num b1, Num a, Num b2, Functor ((,,,,) a b1 c d)) =&gt;
                (a, b1, c, d, b2)
  Prelude&gt;
  </code></pre>