Disclaimer: I don&#39;t really know all about category theory, so some definitions might not be absolutely correct.<br><br>Monoid is the category of all types that have a empty value and an append operation.<br><br>The best example is a list.<br>
<br><pre><font size="4"><span class="keyword">instance</span> <span class="conid">Monoid</span> <span class="keyglyph">[</span><span class="varid">a</span><span class="keyglyph">]</span> <span class="keyword">where</span><br>
<a name="(line68)"></a>        <span class="varid">mempty</span>  <span class="keyglyph">=</span> <span class="conid">[]</span><br><a name="(line69)"></a>        <span class="varid">mappend</span> <span class="keyglyph">=</span> <span class="layout">(</span><span class="varop">++</span><span class="layout">)</span></font><br>
<br></pre><br>Why do I need it? Well, you can think of a function where you need to incrementally store data. <br><br>Storing them to a Monoid, you can start with a list and then change to a Set, without changing the function itself, because it would be defined based on the Monoid operations.<br>
<br><pre><font size="4"><span class="keyword">instance</span> <span class="conid">Ord</span> <span class="varid">a</span> <span class="keyglyph">=&gt;</span> <span class="conid">Monoid</span> <span class="layout">(</span><span class="conid">Set</span> <span class="varid">a</span><span class="layout">)</span> <span class="keyword">where</span><br>
<a name="(line143)"></a>    <span class="varid">mempty</span>  <span class="keyglyph">=</span> <span class="varid">empty</span><br><a name="(line144)"></a>    <span class="varid">mappend</span> <span class="keyglyph">=</span> <span class="varid">union</span><br>
<a name="(line145)"></a>    <span class="varid">mconcat</span> <span class="keyglyph">=</span> <span class="varid">unions</span><br><br></font></pre>Hope I have helped!<br><br>Regards,<br><br>Rafael<br><br><br><br><div class="gmail_quote">
On Fri, Nov 13, 2009 at 14:14, Magicloud Magiclouds <span dir="ltr">&lt;<a href="mailto:magicloud.magiclouds@gmail.com">magicloud.magiclouds@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
 &nbsp;I have looked the concept of monoid and something related, but<br>
still, I do not know why we use it?<br>
<font color="#888888"><br>
--<br>
竹密岂妨流水过<br>
山高哪阻野云飞<br>
</font><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Rafael Gustavo da Cunha Pereira Pinto<br><br>