Another hint of intuition for C#&#x27;ers out there. Foldable is like IEnumerable, and Traversable is a bit like ICollection. Some are a bit unhappy with the names too, even though they really make sense from the category theory sense.<p>A thing about Foldable is that you can fold over it (obviously) but you can&#x27;t necessarily map over it because in Haskell the general map (fmap of the Functor typeclass) has the law that `map (f1.f2) enum == ((map f1) . (map f2)) enum` but for example for Set this law won&#x27;t hold because the intermediate set might drop elements identical elements that would not have been identical would the f1.f2 been applied in direct succession. See [0] for an example. Why fmap has this law I don&#x27;t know, but Functor is super fundamental in Haskell&#x27;s types so you can bet it&#x27;s there for a good reason.<p>Note that this Foldable-Traversable-Functor introduction into Prelude is not complete yet. For example the map in prelude is: `map :: (a -&gt; b) -&gt; [a] -&gt; [b]`. If this movement continues it will possibly be `map :: (Functor f) =&gt; (a -&gt; b) -&gt; f a -&gt; f b`. People are super scared of the name Functor, so I think that&#x27;s why it&#x27;s not been adopted yet. It should possibly be renamed to Container or Mappable to be more in line with what general developers expect.<p>Would prelude&#x27;s map be made equal to fmap however, it would make prelude super powerful. It would suddenly work on <i>any</i> Functor type, not just List.<p>[0] <a href="https:&#x2F;&#x2F;www.fpcomplete.com&#x2F;user&#x2F;chad&#x2F;snippets&#x2F;random-code-snippets&#x2F;set-is-not-a-functor" rel="nofollow">https:&#x2F;&#x2F;www.fpcomplete.com&#x2F;user&#x2F;chad&#x2F;snippets&#x2F;random-code-sn...</a><p>p.s.: if you don&#x27;t grok typeclass, call it classclass instead, i.e. class of classes. And then think about how C#&#x27;s Interface also defines a class of classes.