<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Dec 28, 2016 at 9:28 AM, Cody Goodman <span dir="ltr"><<a href="mailto:codygman.consulting@gmail.com" target="_blank">codygman.consulting@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>My goal is to take data like this:<br><br>                        [ Info 0 "Alcohol" "TX"<br>                        , Info 1 "Alcohol" "TX"<br>                        , Info 2 "Pregnancy" "MA"<br>                        ]<br><br></div>and build a Map like this:<br><br>[("MA",[("Pregnancy",1)]),("<wbr>TX",[("Alcohol",2)])]<br></div></div></blockquote></div><div><br></div><div>You can convert each individual record to a singleton map:</div><div><br></div><div>wrapRecord :: Info -> <span style="font-size:12.8px">M.Map String (M.Map String Integer)</span><br></div><div>wrapRecord (Info _ state healthTopic) = M.singleton state (M.singleton healthTopic 1)</div><div><br></div><div>and then union all these singletons:</div><div><br></div><div><span style="font-size:12.8px">numTopicsPerState = M.unionsWith (M.unionWith (+)) . map wrapRecord $ [</span>Info 0 "Alcohol" "TX", Info 1 "Alcohol" "TX", Info 2 "Pregnancy" "MA"<span style="font-size:12.8px">]</span></div>
</div></div>