I think the use of mathematical names for sufficiently generic concepts in Haskell improves a certain kind of discussion.<p>If we had an interface called &quot;Appendable&quot;, that leaves room for arguing over the boundaries of what &quot;really&quot; counts as &quot;appending&quot;.  This is contentious, because interfaces define what we should be able to rely on.<p>In Haskell, it&#x27;s entirely clear what is and is not a Semigroup.  Does it follow the Semigroup laws?  Okay, it&#x27;s a Semigroup!  What can I rely on if I ask for a Semigroup?  The Semigroup laws.<p>Discussion of, say, whether &quot;container&quot; is a good way to think of a &quot;functor&quot; is more quickly recognized as a purely pedagogical question - which doesn&#x27;t mean it can&#x27;t be contentious, but doesn&#x27;t as much get in the way of getting work done.