This file is indexed.

/usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html is in libghc-semigroups-doc 0.18.0.1-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Semigroup</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Data-Semigroup.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Semigroup.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">semigroups-0.18.0.1: Anything that associates</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(C) 2011-2015 Edward Kmett</td></tr><tr><th>License</th><td>BSD-style (see the file LICENSE)</td></tr><tr><th>Maintainer</th><td>Edward Kmett &lt;ekmett@gmail.com&gt;</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Data.Semigroup</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Semigroups</a></li><li><a href="#g:2">Re-exported monoids from Data.Monoid</a></li><li><a href="#g:3">A better monoid for Maybe</a></li><li><a href="#g:4">Difference lists of a semigroup</a></li><li><a href="#g:5">ArgMin, ArgMax</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>In mathematics, a semigroup is an algebraic structure consisting of a
 set together with an associative binary operation. A semigroup
 generalizes a monoid in that there might not exist an identity
 element. It also (originally) generalized a group (a monoid with all
 inverses) to a type where every element did not have to have an inverse,
 thus the name semigroup.</p><p>The use of <code>(&lt;&gt;)</code> in this module conflicts with an operator with the same
 name that is being exported by Data.Monoid. However, this package
 re-exports (most of) the contents of Data.Monoid, so to use semigroups
 and monoids in the same package just</p><pre>import Data.Semigroup</pre></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> <a href="#t:Semigroup">Semigroup</a> a <span class="keyword">where</span><ul class="subs"><li><a href="#v:-60--62-">(&lt;&gt;)</a> :: a -&gt; a -&gt; a</li><li><a href="#v:sconcat">sconcat</a> :: <a href="Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a> a -&gt; a</li><li><a href="#v:stimes">stimes</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b =&gt; b -&gt; a -&gt; a</li></ul></li><li class="src short"><a href="#v:stimesMonoid">stimesMonoid</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> a) =&gt; b -&gt; a -&gt; a</li><li class="src short"><a href="#v:stimesIdempotent">stimesIdempotent</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b =&gt; b -&gt; a -&gt; a</li><li class="src short"><a href="#v:stimesIdempotentMonoid">stimesIdempotentMonoid</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> a) =&gt; b -&gt; a -&gt; a</li><li class="src short"><a href="#v:mtimesDefault">mtimesDefault</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> a) =&gt; b -&gt; a -&gt; a</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Min">Min</a> a = <a href="#v:Min">Min</a> {<ul class="subs"><li><a href="#v:getMin">getMin</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Max">Max</a> a = <a href="#v:Max">Max</a> {<ul class="subs"><li><a href="#v:getMax">getMax</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:First">First</a> a = <a href="#v:First">First</a> {<ul class="subs"><li><a href="#v:getFirst">getFirst</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Last">Last</a> a = <a href="#v:Last">Last</a> {<ul class="subs"><li><a href="#v:getLast">getLast</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:WrappedMonoid">WrappedMonoid</a> m = <a href="#v:WrapMonoid">WrapMonoid</a> {<ul class="subs"><li><a href="#v:unwrapMonoid">unwrapMonoid</a> :: m</li></ul>}</li><li class="src short"><span class="keyword">class</span> <a href="#t:Monoid">Monoid</a> a <span class="keyword">where</span><ul class="subs"><li><a href="#v:mempty">mempty</a> :: a</li><li><a href="#v:mappend">mappend</a> :: a -&gt; a -&gt; a</li><li><a href="#v:mconcat">mconcat</a> :: [a] -&gt; a</li></ul></li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Dual">Dual</a> a :: * -&gt; * = <a href="#v:Dual">Dual</a> {<ul class="subs"><li><a href="#v:getDual">getDual</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Endo">Endo</a> a :: * -&gt; * = <a href="#v:Endo">Endo</a> {<ul class="subs"><li><a href="#v:appEndo">appEndo</a> :: a -&gt; a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:All">All</a> :: * = <a href="#v:All">All</a> {<ul class="subs"><li><a href="#v:getAll">getAll</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Any">Any</a> :: * = <a href="#v:Any">Any</a> {<ul class="subs"><li><a href="#v:getAny">getAny</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Sum">Sum</a> a :: * -&gt; * = <a href="#v:Sum">Sum</a> {<ul class="subs"><li><a href="#v:getSum">getSum</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Product">Product</a> a :: * -&gt; * = <a href="#v:Product">Product</a> {<ul class="subs"><li><a href="#v:getProduct">getProduct</a> :: a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Option">Option</a> a = <a href="#v:Option">Option</a> {<ul class="subs"><li><a href="#v:getOption">getOption</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a</li></ul>}</li><li class="src short"><a href="#v:option">option</a> :: b -&gt; (a -&gt; b) -&gt; <a href="Data-Semigroup.html#t:Option">Option</a> a -&gt; b</li><li class="src short"><a href="#v:diff">diff</a> :: <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> m =&gt; m -&gt; <a href="Data-Semigroup.html#t:Endo">Endo</a> m</li><li class="src short"><a href="#v:cycle1">cycle1</a> :: <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> m =&gt; m -&gt; m</li><li class="src short"><span class="keyword">data</span> <a href="#t:Arg">Arg</a> a b = <a href="#v:Arg">Arg</a> a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:ArgMin">ArgMin</a> a b = <a href="Data-Semigroup.html#t:Min">Min</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</li><li class="src short"><span class="keyword">type</span> <a href="#t:ArgMax">ArgMax</a> a b = <a href="Data-Semigroup.html#t:Max">Max</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Semigroup" class="def">Semigroup</a> a <span class="keyword">where</span> <a href="src/Data-Semigroup.html#Semigroup" class="link">Source</a></p><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src">Nothing</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:-60--62-" class="def">(&lt;&gt;)</a> :: a -&gt; a -&gt; a <span class="fixity">infixr 6</span><span class="rightedge"></span> <a href="src/Data-Semigroup.html#%3C%3E" class="link">Source</a></p><div class="doc"><p>An associative operation.</p><pre>(a <code><a href="Data-Semigroup.html#v:-60--62-">&lt;&gt;</a></code> b) <code><a href="Data-Semigroup.html#v:-60--62-">&lt;&gt;</a></code> c = a <code><a href="Data-Semigroup.html#v:-60--62-">&lt;&gt;</a></code> (b <code><a href="Data-Semigroup.html#v:-60--62-">&lt;&gt;</a></code> c)
</pre><p>If <code>a</code> is also a <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code> we further require</p><pre>(<code><a href="Data-Semigroup.html#v:-60--62-">&lt;&gt;</a></code>) = <code><a href="Data-Semigroup.html#v:mappend">mappend</a></code>
</pre></div><p class="src"><a name="v:sconcat" class="def">sconcat</a> :: <a href="Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a> a -&gt; a <a href="src/Data-Semigroup.html#sconcat" class="link">Source</a></p><div class="doc"><p>Reduce a non-empty list with <code>&lt;&gt;</code></p><p>The default definition should be sufficient, but this can be overridden for efficiency.</p></div><p class="src"><a name="v:stimes" class="def">stimes</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b =&gt; b -&gt; a -&gt; a <a href="src/Data-Semigroup.html#stimes" class="link">Source</a></p><div class="doc"><p>Repeat a value <code>n</code> times.</p><p>Given that this works on a <code><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a></code> it is allowed to fail if you request 0 or fewer
 repetitions, and the default definition will do so.</p><p>By making this a member of the class, idempotent semigroups and monoids can upgrade this to execute in
 <em>O(1)</em> by picking <code>stimes = stimesIdempotent</code> or <code>stimes = stimesIdempotentMonoid</code> respectively.</p><p><em>Since: 0.17</em></p></div></div><div class="subs instances"><p id="control.i:Semigroup" class="caption collapser" onclick="toggleSection('i:Semigroup')">Instances</p><div id="section.i:Semigroup" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ordering">Ordering</a></span> <a href="src/Data-Semigroup.html#line-286" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> ()</span> <a href="src/Data-Semigroup.html#line-237" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Void.html#t:Void">Void</a></span> <a href="src/Data-Semigroup.html#line-410" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="Data-Semigroup.html#t:All">All</a></span> <a href="src/Data-Semigroup.html#line-304" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="Data-Semigroup.html#t:Any">Any</a></span> <a href="src/Data-Semigroup.html#line-313" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></span> <a href="src/Data-Semigroup.html#line-791" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></span> <a href="src/Data-Semigroup.html#line-794" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString-Builder.html#t:Builder">Builder</a></span> <a href="src/Data-Semigroup.html#line-798" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString-Short.html#t:ShortByteString">ShortByteString</a></span> <a href="src/Data-Semigroup.html#line-803" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntSet.html#t:IntSet">IntSet</a></span> <a href="src/Data-Semigroup.html#line-993" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/libghc-text-doc/html/Data-Text-Lazy-Builder.html#t:Builder">Builder</a></span> <a href="src/Data-Semigroup.html#line-815" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/libghc-text-doc/html/Data-Text-Lazy.html#t:Text">Text</a></span> <a href="src/Data-Semigroup.html#line-812" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="file:///usr/share/doc/libghc-text-doc/html/Data-Text.html#t:Text">Text</a></span> <a href="src/Data-Semigroup.html#line-809" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> [a]</span> <a href="src/Data-Semigroup.html#line-246" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span> <a href="src/Data-Semigroup.html#line-292" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Endo">Endo</a> a)</span> <a href="src/Data-Semigroup.html#line-296" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span> <a href="src/Data-Semigroup.html#line-323" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span> <a href="src/Data-Semigroup.html#line-331" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-388" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-393" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a)</span> <a href="src/Data-Semigroup.html#line-255" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntMap-Strict.html#t:IntMap">IntMap</a> v)</span> <a href="src/Data-Semigroup.html#line-1001" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Set.html#t:Set">Set</a> a)</span> <a href="src/Data-Semigroup.html#line-997" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:Seq">Seq</a> a)</span> <a href="src/Data-Semigroup.html#line-990" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a) =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/libghc-unordered-containers-doc/html/Data-HashSet.html#t:HashSet">HashSet</a> a)</span> <a href="src/Data-Semigroup.html#line-824" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a> a)</span> <a href="src/Data-Semigroup.html#line-415" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-969" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> m =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-853" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-755" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-686" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-540" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-455" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> b =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (a -&gt; b)</span> <a href="src/Data-Semigroup.html#line-242" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a> a b)</span> <a href="src/Data-Semigroup.html#line-265" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> b) =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (a, b)</span> <a href="src/Data-Semigroup.html#line-270" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Const">Const</a> a b)</span> <a href="src/Data-Semigroup.html#line-379" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Proxy.html#t:Proxy">Proxy</a> k s)</span> <a href="src/Data-Semigroup.html#line-1011" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> k v)</span> <a href="src/Data-Semigroup.html#line-1005" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> k, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> k) =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/libghc-unordered-containers-doc/html/Data-HashMap-Strict.html#t:HashMap">HashMap</a> k a)</span> <a href="src/Data-Semigroup.html#line-820" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> b, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> c) =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (a, b, c)</span> <a href="src/Data-Semigroup.html#line-274" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> f =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Alt">Alt</a> * f a)</span> <a href="src/Data-Semigroup.html#line-400" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="file:///usr/share/doc/libghc-tagged-doc/html/Data-Tagged.html#t:Tagged">Tagged</a> k s a)</span> <a href="src/Data-Semigroup.html#line-1018" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> b, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> c, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> d) =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (a, b, c, d)</span> <a href="src/Data-Semigroup.html#line-278" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> b, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> c, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> d, <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> e) =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (a, b, c, d, e)</span> <a href="src/Data-Semigroup.html#line-282" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:stimesMonoid" class="def">stimesMonoid</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> a) =&gt; b -&gt; a -&gt; a <a href="src/Data-Semigroup.html#stimesMonoid" class="link">Source</a></p><div class="doc"><p>This is a valid definition of <code><a href="Data-Semigroup.html#v:stimes">stimes</a></code> for a <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>.</p><p>Unlike the default definition of <code><a href="Data-Semigroup.html#v:stimes">stimes</a></code>, it is defined for 0
 and so it should be preferred where possible.</p></div></div><div class="top"><p class="src"><a name="v:stimesIdempotent" class="def">stimesIdempotent</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b =&gt; b -&gt; a -&gt; a <a href="src/Data-Semigroup.html#stimesIdempotent" class="link">Source</a></p><div class="doc"><p>This is a valid definition of <code><a href="Data-Semigroup.html#v:stimes">stimes</a></code> for an idempotent <code><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a></code>.</p><p>When <code>x &lt;&gt; x = x</code>, this definition should be preferred, because it
 works in <em>O(1)</em> rather than <em>O(log n)</em>.</p></div></div><div class="top"><p class="src"><a name="v:stimesIdempotentMonoid" class="def">stimesIdempotentMonoid</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> a) =&gt; b -&gt; a -&gt; a <a href="src/Data-Semigroup.html#stimesIdempotentMonoid" class="link">Source</a></p><div class="doc"><p>This is a valid definition of <code><a href="Data-Semigroup.html#v:stimes">stimes</a></code> for an idempotent <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>.</p><p>When <code>mappend x x = x</code>, this definition should be preferred, because it
 works in <em>O(1)</em> rather than <em>O(log n)</em></p></div></div><div class="top"><p class="src"><a name="v:mtimesDefault" class="def">mtimesDefault</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> a) =&gt; b -&gt; a -&gt; a <a href="src/Data-Semigroup.html#mtimesDefault" class="link">Source</a></p><div class="doc"><p>Repeat a value <code>n</code> times.</p><pre>mtimesDefault n a = a &lt;&gt; a &lt;&gt; ... &lt;&gt; a  -- using &lt;&gt; (n-1) times</pre><p>Implemented using <code><a href="Data-Semigroup.html#v:stimes">stimes</a></code> and <code><a href="Data-Semigroup.html#v:mempty">mempty</a></code>.</p><p>This is a suitable definition for an <code>mtimes</code> member of <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>.</p><p><em>Since: 0.17</em></p></div></div><h1 id="g:1">Semigroups</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Min" class="def">Min</a> a <a href="src/Data-Semigroup.html#Min" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Min" class="def">Min</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getMin" class="def">getMin</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Min" class="caption collapser" onclick="toggleSection('i:Min')">Instances</p><div id="section.i:Min" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-482" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-467" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-487" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-476" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-470" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#t:Traversable">Traversable</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-473" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-427" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-432" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-436" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-420" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-422" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-495" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-420" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-420" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-420" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-425" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-463" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-491" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-447" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-455" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Min">Min</a></span> <a href="src/Data-Semigroup.html#line-419" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span> <a href="src/Data-Semigroup.html#line-419" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Max" class="def">Max</a> a <a href="src/Data-Semigroup.html#Max" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Max" class="def">Max</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getMax" class="def">getMax</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Max" class="caption collapser" onclick="toggleSection('i:Max')">Instances</p><div id="section.i:Max" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-567" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-552" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-572" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-561" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-555" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#t:Traversable">Traversable</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-558" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-512" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-517" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-521" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-505" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-507" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-580" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-505" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-505" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-505" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-510" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-548" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-576" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-532" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-540" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Max">Max</a></span> <a href="src/Data-Semigroup.html#line-504" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span> <a href="src/Data-Semigroup.html#line-504" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:First" class="def">First</a> a <a href="src/Data-Semigroup.html#First" class="link">Source</a></p><div class="doc"><p>Use <code><code><a href="Data-Semigroup.html#t:Option">Option</a></code> (<code><a href="Data-Semigroup.html#t:First">First</a></code> a)</code> to get the behavior of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#v:First">First</a></code> from <code>Data.Monoid</code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:First" class="def">First</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getFirst" class="def">getFirst</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:First" class="caption collapser" onclick="toggleSection('i:First')">Instances</p><div id="section.i:First" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-705" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-690" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-710" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-699" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-693" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#t:Traversable">Traversable</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-696" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-658" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-663" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-667" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-650" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-652" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-650" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-650" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-650" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-656" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-714" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-678" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-686" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:First">First</a></span> <a href="src/Data-Semigroup.html#line-649" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:First">First</a> a)</span> <a href="src/Data-Semigroup.html#line-649" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Last" class="def">Last</a> a <a href="src/Data-Semigroup.html#Last" class="link">Source</a></p><div class="doc"><p>Use <code><code><a href="Data-Semigroup.html#t:Option">Option</a></code> (<code><a href="Data-Semigroup.html#t:Last">Last</a></code> a)</code> to get the behavior of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#v:Last">Last</a></code> from <code>Data.Monoid</code></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Last" class="def">Last</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getLast" class="def">getLast</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Last" class="caption collapser" onclick="toggleSection('i:Last')">Instances</p><div id="section.i:Last" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-775" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-759" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-780" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-769" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-763" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#t:Traversable">Traversable</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-766" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-727" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-732" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-736" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-720" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-722" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-720" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-720" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-720" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-725" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-784" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-747" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-755" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Last">Last</a></span> <a href="src/Data-Semigroup.html#line-719" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Last">Last</a> a)</span> <a href="src/Data-Semigroup.html#line-719" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:WrappedMonoid" class="def">WrappedMonoid</a> m <a href="src/Data-Semigroup.html#WrappedMonoid" class="link">Source</a></p><div class="doc"><p>Provide a Semigroup for an arbitrary Monoid.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:WrapMonoid" class="def">WrapMonoid</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:unwrapMonoid" class="def">unwrapMonoid</a> :: m</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:WrappedMonoid" class="caption collapser" onclick="toggleSection('i:WrappedMonoid')">Instances</p><div id="section.i:WrappedMonoid" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a></span> <a href="src/Data-Semigroup.html#line-839" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> a)</span> <a href="src/Data-Semigroup.html#line-864" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Enum">Enum</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> a)</span> <a href="src/Data-Semigroup.html#line-868" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> m =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-832" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> m =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-834" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> m =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-832" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> m =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-832" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> m =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-832" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-837" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> m =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-860" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> m =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-879" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> a)</span> <a href="src/Data-Semigroup.html#line-845" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> m =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-853" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a></span> <a href="src/Data-Semigroup.html#line-830" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span> <a href="src/Data-Semigroup.html#line-830" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:2">Re-exported monoids from Data.Monoid</h1><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Monoid" class="def">Monoid</a> a <span class="keyword">where</span></p><div class="doc"><p>The class of monoids (types with an associative binary operation that
 has an identity).  Instances should satisfy the following laws:</p><ul><li><pre>mappend mempty x = x</pre></li><li><pre>mappend x mempty = x</pre></li><li><pre>mappend x (mappend y z) = mappend (mappend x y) z</pre></li><li><pre>mconcat = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:foldr">foldr</a></code> mappend mempty</pre></li></ul><p>The method names refer to the monoid of lists under concatenation,
 but there are many other instances.</p><p>Some types can be viewed as a monoid in more than one way,
 e.g. both addition and multiplication on numbers.
 In such cases we often define <code>newtype</code>s and make those instances
 of <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>, e.g. <code>Sum</code> and <code>Product</code>.</p></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Data-Semigroup.html#v:mempty">mempty</a>, <a href="Data-Semigroup.html#v:mappend">mappend</a></p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mempty" class="def">mempty</a> :: a</p><div class="doc"><p>Identity of <code><a href="Data-Semigroup.html#v:mappend">mappend</a></code></p></div><p class="src"><a name="v:mappend" class="def">mappend</a> :: a -&gt; a -&gt; a</p><div class="doc"><p>An associative operation</p></div><p class="src"><a name="v:mconcat" class="def">mconcat</a> :: [a] -&gt; a</p><div class="doc"><p>Fold a list using the monoid.
 For most types, the default definition for <code><a href="Data-Semigroup.html#v:mconcat">mconcat</a></code> will be
 used, but the function is included in the class definition so
 that an optimized version can be provided for specific types.</p></div></div><div class="subs instances"><p id="control.i:Monoid" class="caption collapser" onclick="toggleSection('i:Monoid')">Instances</p><div id="section.i:Monoid" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ordering">Ordering</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> ()</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString-Builder.html#t:Builder">Builder</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/bytestring-0.10.6.0/Data-ByteString-Short.html#t:ShortByteString">ShortByteString</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntSet.html#t:IntSet">IntSet</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="file:///usr/share/doc/libghc-text-doc/html/Data-Text-Lazy-Builder.html#t:Builder">Builder</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> [a]</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (Max a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (Min a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Endo">Endo</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:First">First</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Last">Last</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a)</span></td><td class="doc"><p>Lift a semigroup into <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a></code> forming a <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code> according to
 <a href="http://en.wikipedia.org/wiki/Monoid">http://en.wikipedia.org/wiki/Monoid</a>: &quot;Any semigroup <code>S</code> may be
 turned into a monoid simply by adjoining an element <code>e</code> not in <code>S</code>
 and defining <code>e*e = e</code> and <code>e*s = s = s*e</code> for all <code>s &#8712; S</code>.&quot; Since
 there is no &quot;Semigroup&quot; typeclass providing just <code><a href="Data-Semigroup.html#v:mappend">mappend</a></code>, we
 use <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code> instead.</p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntMap-Strict.html#t:IntMap">IntMap</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Set.html#t:Set">Set</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:Seq">Seq</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/libghc-unordered-containers-doc/html/Data-HashSet.html#t:HashSet">HashSet</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> m =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:WrappedMonoid">WrappedMonoid</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Max">Max</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Min">Min</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> b =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (a -&gt; b)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Monoid">Monoid</a> a, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> b) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (a, b)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Const">Const</a> a b)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Proxy.html#t:Proxy">Proxy</a> k s)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> k v)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> k, <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> k) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/libghc-unordered-containers-doc/html/Data-HashMap-Strict.html#t:HashMap">HashMap</a> k v)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Monoid">Monoid</a> a, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> c) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (a, b, c)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> f =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Alt">Alt</a> * f a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="file:///usr/share/doc/libghc-tagged-doc/html/Data-Tagged.html#t:Tagged">Tagged</a> k s a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Monoid">Monoid</a> a, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> c, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> d) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (a, b, c, d)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Semigroup.html#t:Monoid">Monoid</a> a, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> b, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> c, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> d, <a href="Data-Semigroup.html#t:Monoid">Monoid</a> e) =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (a, b, c, d, e)</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Dual" class="def">Dual</a> a :: * -&gt; *</p><div class="doc"><p>The dual of a <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>, obtained by swapping the arguments of <code><a href="Data-Semigroup.html#v:mappend">mappend</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Dual" class="def">Dual</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getDual" class="def">getDual</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Dual" class="caption collapser" onclick="toggleSection('i:Dual')">Instances</p><div id="section.i:Dual" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Dual">Dual</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span></td><td class="doc"><p><em>Since: 1.4.0.0</em></p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a)</span> <a href="src/Data-Semigroup.html#line-292" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Dual">Dual</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Dual (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Dual (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Dual <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Par1">Par1</a>))</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Dual">Dual</a> a) = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Dual (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Dual (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Dual (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rec0">Rec0</a> a)))</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Endo" class="def">Endo</a> a :: * -&gt; *</p><div class="doc"><p>The monoid of endomorphisms under composition.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Endo" class="def">Endo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:appEndo" class="def">appEndo</a> :: a -&gt; a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Endo" class="caption collapser" onclick="toggleSection('i:Endo')">Instances</p><div id="section.i:Endo" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Endo">Endo</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Endo">Endo</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Endo">Endo</a> a)</span> <a href="src/Data-Semigroup.html#line-296" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Endo">Endo</a> a) = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Endo (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Endo (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Endo (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rec0">Rec0</a> (a -&gt; a))))</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:All" class="def">All</a> :: *</p><div class="doc"><p>Boolean monoid under conjunction (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#v:-38--38-">&amp;&amp;</a></code>).</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:All" class="def">All</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getAll" class="def">getAll</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:All" class="caption collapser" onclick="toggleSection('i:All')">Instances</p><div id="section.i:All" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> <a href="Data-Semigroup.html#t:All">All</a></span></td><td class="doc"><p><em>Since: 1.4.0.0</em></p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="Data-Semigroup.html#t:All">All</a></span> <a href="src/Data-Semigroup.html#line-304" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> <a href="Data-Semigroup.html#t:All">All</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1All (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0All (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0All (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rec0">Rec0</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>)))</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Any" class="def">Any</a> :: *</p><div class="doc"><p>Boolean monoid under disjunction (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#v:-124--124-">||</a></code>).</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Any" class="def">Any</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getAny" class="def">getAny</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Any" class="caption collapser" onclick="toggleSection('i:Any')">Instances</p><div id="section.i:Any" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Monoid">Monoid</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> <a href="Data-Semigroup.html#t:Any">Any</a></span></td><td class="doc"><p><em>Since: 1.4.0.0</em></p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> <a href="Data-Semigroup.html#t:Any">Any</a></span> <a href="src/Data-Semigroup.html#line-313" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> <a href="Data-Semigroup.html#t:Any">Any</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Any (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Any (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Any (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rec0">Rec0</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>)))</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Sum" class="def">Sum</a> a :: * -&gt; *</p><div class="doc"><p>Monoid under addition.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Sum" class="def">Sum</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getSum" class="def">getSum</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Sum" class="caption collapser" onclick="toggleSection('i:Sum')">Instances</p><div id="section.i:Sum" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Sum">Sum</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span></td><td class="doc"><p><em>Since: 1.4.0.0</em></p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a)</span> <a href="src/Data-Semigroup.html#line-323" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Sum">Sum</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Sum (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Sum (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Sum <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Par1">Par1</a>))</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Sum">Sum</a> a) = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Sum (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Sum (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Sum (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rec0">Rec0</a> a)))</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Product" class="def">Product</a> a :: * -&gt; *</p><div class="doc"><p>Monoid under multiplication.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Product" class="def">Product</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getProduct" class="def">getProduct</a> :: a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Product" class="caption collapser" onclick="toggleSection('i:Product')">Instances</p><div id="section.i:Product" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Product">Product</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Bounded">Bounded</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span></td><td class="doc"><p><em>Since: 1.4.0.0</em></p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Num">Num</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a)</span> <a href="src/Data-Semigroup.html#line-331" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Product">Product</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Product (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Product (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Product <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Par1">Par1</a>))</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Product">Product</a> a) = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:D1">D1</a> D1Product (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:C1">C1</a> C1_0Product (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:S1">S1</a> S1_0_0Product (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rec0">Rec0</a> a)))</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:3">A better monoid for Maybe</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Option" class="def">Option</a> a <a href="src/Data-Semigroup.html#Option" class="link">Source</a></p><div class="doc"><p><code><a href="Data-Semigroup.html#t:Option">Option</a></code> is effectively <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a></code> with a better instance of <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>, built off of an underlying <code><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a></code>
 instead of an underlying <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>.</p><p>Ideally, this type would not exist at all and we would just fix the <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code> instance of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a></code></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Option" class="def">Option</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:getOption" class="def">getOption</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Option" class="caption collapser" onclick="toggleSection('i:Option')">Instances</p><div id="section.i:Option" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-931" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-924" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-949" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-927" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-952" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#t:Traversable">Traversable</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-956" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-910" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-940" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-945" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-903" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-905" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-903" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-903" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-903" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-908" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Monoid">Monoid</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-981" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-961" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-916" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> a =&gt; <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-969" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> <a href="Data-Semigroup.html#t:Option">Option</a></span> <a href="src/Data-Semigroup.html#line-901" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Option">Option</a> a)</span> <a href="src/Data-Semigroup.html#line-901" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:option" class="def">option</a> :: b -&gt; (a -&gt; b) -&gt; <a href="Data-Semigroup.html#t:Option">Option</a> a -&gt; b <a href="src/Data-Semigroup.html#option" class="link">Source</a></p><div class="doc"><p>Fold an <code><a href="Data-Semigroup.html#t:Option">Option</a></code> case-wise, just like <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:maybe">maybe</a></code>.</p></div></div><h1 id="g:4">Difference lists of a semigroup</h1><div class="top"><p class="src"><a name="v:diff" class="def">diff</a> :: <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> m =&gt; m -&gt; <a href="Data-Semigroup.html#t:Endo">Endo</a> m <a href="src/Data-Semigroup.html#diff" class="link">Source</a></p><div class="doc"><p>This lets you use a difference list of a <code><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a></code> as a <code><a href="Data-Semigroup.html#t:Monoid">Monoid</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:cycle1" class="def">cycle1</a> :: <a href="Data-Semigroup.html#t:Semigroup">Semigroup</a> m =&gt; m -&gt; m <a href="src/Data-Semigroup.html#cycle1" class="link">Source</a></p><div class="doc"><p>A generalization of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-List.html#v:cycle">cycle</a></code> to an arbitrary <code><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a></code>.
 May fail to terminate for some values in some semigroups.</p></div></div><h1 id="g:5">ArgMin, ArgMax</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Arg" class="def">Arg</a> a b <a href="src/Data-Semigroup.html#Arg" class="link">Source</a></p><div class="doc"><p><code><a href="Data-Semigroup.html#t:Arg">Arg</a></code> isn't itself a <code><a href="Data-Semigroup.html#t:Semigroup">Semigroup</a></code> in its own right, but it can be placed inside <code><a href="Data-Semigroup.html#t:Min">Min</a></code> and <code><a href="Data-Semigroup.html#t:Max">Max</a></code>
 to compute an arg min or arg max.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Arg" class="def">Arg</a> a b</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Arg" class="caption collapser" onclick="toggleSection('i:Arg')">Instances</p><div id="section.i:Arg" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bifunctor.html#t:Bifunctor">Bifunctor</a> <a href="Data-Semigroup.html#t:Arg">Arg</a></span> <a href="src/Data-Semigroup.html#line-644" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a)</span> <a href="src/Data-Semigroup.html#line-608" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a)</span> <a href="src/Data-Semigroup.html#line-611" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#t:Traversable">Traversable</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a)</span> <a href="src/Data-Semigroup.html#line-614" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic1">Generic1</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a)</span> <a href="src/Data-Semigroup.html#line-600" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-617" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> b) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-595" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-620" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> b) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-593" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> b) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-593" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Generic">Generic</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-598" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> b) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/deepseq-1.4.1.1/Control-DeepSeq.html#t:NFData">NFData</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-630" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> a, <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> b) =&gt; <a href="file:///usr/share/doc/libghc-hashable-doc/html/Data-Hashable.html#t:Hashable">Hashable</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-635" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep1">Rep1</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a)</span> <a href="src/Data-Semigroup.html#line-592" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-Generics.html#t:Rep">Rep</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b)</span> <a href="src/Data-Semigroup.html#line-592" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:ArgMin" class="def">ArgMin</a> a b = <a href="Data-Semigroup.html#t:Min">Min</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b) <a href="src/Data-Semigroup.html#ArgMin" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:ArgMax" class="def">ArgMax</a> a b = <a href="Data-Semigroup.html#t:Max">Max</a> (<a href="Data-Semigroup.html#t:Arg">Arg</a> a b) <a href="src/Data-Semigroup.html#ArgMax" class="link">Source</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>