title: If map can be defined using Foldable, why is Functor not mentioned in definition of Foldable
body: <p>I read that, <code>map</code> can be defined using <code>foldr</code>, i.e. it is a primitive recursive function. At least for lists.</p>
  
  <p>Now my question: Why is Functor not a sub type class of Foldable? And if <code>fmap</code> can only be defined in terms of <code>foldr</code> for lists, what makes them special?</p>
  
  <p>Looking at a definition of <code>map</code> with foldr:</p>
  
  <pre><code>myMap f xs = foldr step [] xs
      where step x ys = f x : ys
  </code></pre>
  
  <p>I could use Monoids to get to:</p>
  
  <pre><code>myMap f xs = foldr step mempty xs
      where step x ys = f x : ys
  </code></pre>
  
  <p>But sadly I'm not much enough of a Haskell magician to get away with <code>cons</code>.</p>