<div>Hello Francesco, <br></div><div><br></div><div>>


`Map k v` is already an instance of `Monoid` (when `v` is an instance
of `Ord`), are you sure you need to write another one?<br></div><div><br></div><div>Thanks for your answer! <br></div><div>My "Values" is a Monoid, however it seems that the Graph cannot properly be seen correctly as a Monoid <br></div><div><br></div><div>using mconcat does not (properly) work, meaning that <> is not correctly applied to the someMonoids </div><div>so instead of <br></div><div><br></div><div>type G = Map Text someMonoid<br></div><div>mconcat [gs]<br></div><div><br></div><div>I have to write:<br></div><div><br></div><div style="color: #333333;background-color: #f5f5f5;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color:rgb(51, 51, 51)">foldr (Map</span><span style="color:rgb(119, 119, 119)">.</span><span style="color:rgb(51, 51, 51)">unionWith </span><span style="color:rgb(170, 55, 49)"><b>(<>)</b></span><span style="color:rgb(51, 51, 51)">) Map</span><span style="color:rgb(119, 119, 119)">.</span><span style="color:rgb(51, 51, 51)">empty [gs]</span><br></div></div><div><br></div><div>This passes the tests. <br></div><div>Same Problem with <br></div><div>g1 <> g2  --(Does not work properly)<br></div><div>and <br></div><div>Map.unionWith (<>) g1 g2 --(Does work)<br></div><div><br></div><div>I have declared someMonoid myself, do I need to declare something special about it? <br></div><div>I feel like my G is messing up with <> being about him, or about someMonoid<br></div><div><br></div><div>A broken down piece of code is:<br></div><div><br></div><div style="color: #333333;background-color: #f5f5f5;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color:rgb(75, 105, 198)">import</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)"><b>Data.Map</b></span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(75, 105, 198)">as</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)"><b>Map</b></span><br></div><div><br></div><div><span style="color:rgb(75, 105, 198)">data</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">Sum</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(75, 105, 198)">=</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(156, 93, 39)">Sum</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(156, 93, 39)">Int</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(75, 105, 198)">deriving</span><span style="color:rgb(51, 51, 51)"> (</span><span style="color:rgb(122, 62, 157)"><b>Eq</b></span><span style="color:rgb(51, 51, 51)">,</span><span style="color:rgb(122, 62, 157)"><b>Show</b></span><span style="color:rgb(51, 51, 51)">)</span><br></div><div><br></div><div><span style="color:rgb(75, 105, 198)">instance</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">Semigroup</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">Sum</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(75, 105, 198)">where</span><span style="color:rgb(51, 51, 51)"> </span><br></div><div><span style="color:rgb(51, 51, 51)">    </span><span style="color:rgb(170, 55, 49)"><b>(<>)</b></span><span style="color:rgb(51, 51, 51)"> (</span><span style="color:rgb(156, 93, 39)">Sum</span><span style="color:rgb(51, 51, 51)"> a) (</span><span style="color:rgb(156, 93, 39)">Sum</span><span style="color:rgb(51, 51, 51)"> b)</span><span style="color:rgb(119, 119, 119)">=</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(156, 93, 39)">Sum</span><span style="color:rgb(51, 51, 51)">(a </span><span style="color:rgb(119, 119, 119)">+</span><span style="color:rgb(51, 51, 51)"> b) </span><br></div><div><span style="color:rgb(75, 105, 198)">instance</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">Monoid</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">Sum</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(75, 105, 198)">where</span><span style="color:rgb(51, 51, 51)"> </span><br></div><div><span style="color:rgb(51, 51, 51)">    mempty </span><span style="color:rgb(119, 119, 119)">=</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(156, 93, 39)">Sum</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(156, 93, 39)">0</span><span style="color:rgb(51, 51, 51)"> </span><br></div><div><br></div><div><span style="color:rgb(75, 105, 198)">type</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">G</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(75, 105, 198)">=</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)"><b>Map</b></span><span style="color:rgb(51, 51, 51)">.</span><span style="color:rgb(122, 62, 157)">Map</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">String</span><span style="color:rgb(51, 51, 51)"> </span><span style="color:rgb(122, 62, 157)">Sum</span><br></div></div><div><br></div><div>And to verify my problem:<br></div><div>GHCI > v = Map.singleton "A" (Sum 1)<br></div><div>GHCI > u = Map.singleton "A" (Sum 1)<br></div><div>GHCI> c= v <> u<br></div><div>GHCI> Map.lookup "A" c<br></div><div>Just (Sum 1)<br></div><div><br></div><div>but I want <br></div><div>Just (Sum 2)<br></div><div><br></div><div>thanks <br></div><div>Leonhard<br></div>