<div dir="ltr"><div style class="markdown-here-wrapper" id="markdown-here-wrapper-629544"><p style="margin:1.2em 0px!important">Dear Haskellers,</p>
<p style="margin:1.2em 0px!important">are these monoids defined somewhere?</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px 3px 3px 3px;display:inline;white-space:pre;overflow:auto;border-radius:3px 3px 3px 3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block;padding:0.5em;color:rgb(51,51,51);background:none repeat scroll 0% 0% rgb(248,248,255)" class="language-haskell"><span class="import"><span style="color:rgb(51,51,51);font-weight:bold" class="keyword">import</span> Control.Applicative</span>
<span class="import"><span style="color:rgb(51,51,51);font-weight:bold" class="keyword">import</span> Data.Monoid</span>

<span class="typedef"><span style="color:rgb(51,51,51);font-weight:bold" class="keyword">newtype</span> <span class="type">AppMonoid</span> m a = <span class="type">AppMonoid</span> <span class="container">(<span style="color:rgb(153,0,0);font-weight:bold" class="title">m</span> <span style="color:rgb(153,0,0);font-weight:bold" class="title">a</span>)</span></span>
<span style="color:rgb(68,85,136);font-weight:bold" class="class"><span style="color:rgb(51,51,51);font-weight:bold" class="keyword">instance</span> (<span class="type">Monoid</span> a, <span class="type">Applicative</span> m) =&gt; <span class="type">Monoid</span> (<span class="type">AppMonoid</span> m a) <span style="color:rgb(51,51,51);font-weight:bold" class="keyword">where</span></span>
    mempty = <span class="type">AppMonoid</span> $ pure mempty
    mappend (<span class="type">AppMonoid</span> x) (<span class="type">AppMonoid</span> y) = <span class="type">AppMonoid</span> $ mappend &lt;$&gt; x &lt;*&gt; y
<span style="color:rgb(153,153,136);font-style:italic" class="comment">-- With the () monoid for `a` this becames the monoid of effects.</span>

<span class="typedef"><span style="color:rgb(51,51,51);font-weight:bold" class="keyword">newtype</span> <span class="type">AltMonoid</span> m a = <span class="type">AltMonoid</span> <span class="container">(<span style="color:rgb(153,0,0);font-weight:bold" class="title">m</span> <span style="color:rgb(153,0,0);font-weight:bold" class="title">a</span>)</span></span>
<span style="color:rgb(68,85,136);font-weight:bold" class="class"><span style="color:rgb(51,51,51);font-weight:bold" class="keyword">instance</span> <span class="type">Alternative</span> m =&gt; <span class="type">Monoid</span> (<span class="type">AltMonoid</span> m a) <span style="color:rgb(51,51,51);font-weight:bold" class="keyword">where</span></span>
    mempty = <span class="type">AltMonoid</span> empty
    mappend (<span class="type">AltMonoid</span> x) (<span class="type">AltMonoid</span> y) = <span class="type">AltMonoid</span> $ x &lt;|&gt; y</code></pre>
<p style="margin:1.2em 0px!important">(and similarly for Monad/MonadPlus, until they become subclasses of Applicative?)</p>
<p style="margin:1.2em 0px!important">  Best regards,<br>  Petr</p>
</div></div>