<i>&quot;I still don&#x27;t understand how one can express a concept such as monoid or group in, say, Haskell.&quot;</i><p>Roughly the same way one can express the concept in mathematics.  You say &quot;this set forms a monoid under that operation, with such-and-such identity element&quot;, and optionally include some argument (or, ideally, proof) that this is the case.<p>In (traditional&#x2F;most) math, that is only checked by humans.<p>In Haskell, it is checked by humans and hopefully tests (laws often make great QuickCheck properties!).