title: Any function with the same polymorphic type as fmap must be equal to fmap?
body: <p>I'm reading the second edition of Programming in Haskell and I've came across this sentence:</p>
  
  <blockquote>
    <p>... there is only one way to make any given parameterised type into a functor, and hence any function with the same polymorphic type as <code>fmap</code> must be equal to <code>fmap</code>.</p>
  </blockquote>
  
  <p>This doesn't seem right to me, though. I can see that there is only one <em>valid</em> definition of <code>fmap</code> for each <code>Functor</code> type, but surely I could define any number of functions with the type <code>(a -&gt; b) -&gt; f a -&gt; f b</code> which aren't equivalent to each other?</p>
  
  <p>Why is this the case? Or, is it just a mistake by the author?</p>