Hello<br><br>What do you think of this?  There is perhaps a recursive call that should be made tail recursive but it seems to work.<br><br>The &#39;group&#39; function takes the list of pairs as input and outputs a list of maps from key to sums.<br>
<br>The nth element of the list of maps corresponds to the grouping applied for the elements 0....n of the input list of pairs. Thus, that also works on infinite list.<br><br>Unless I am missing sth...<br><br><br>import Data.Map (Map)<br>
import qualified Data.Map as Map<br><br>group :: [(Int,Int)]  -&gt; Map Int Int -&gt;  [Map Int Int]<br>group [] amap  = []<br>group ((k, v):t) amap  = newmap : group t newmap<br>                                  where <br>
                                 newmap = (Map.insertWith (+) k v amap) <br><br>l = [(1,1), (2,10), (1,2), (2,11), (1,3), (2,12)]<br><br>r = group l Map.empty<br><br>rr = take 2 r<br><br>li = concat [ [(1,i), (2, 10*i)] | i &lt;- [0..] ]<br>
ri = group li Map.empty<br><br>rri = take 20 ri<br><br><br>Regards<br><br>J-C<br><br><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br>