文字列と数のタプルのリストを合計する関数
もっといい書き方ないんかいな.Preludeとかで用意されてないのか.
union :: [(String,Int)] -> [(String,Int)] -> [(String,Int)] union xs ys = MS.toOccurList $ MS.union (MS.fromOccurList xs) (MS.fromOccurList ys)
入力例.
print $ union [("aaa",3)] [("aaa",3),("bbb",1)] => [("aaa",6),("bbb",1)] union [("aaa",3),("aaa",1)] [("aaa",3),("bbb",1)] => [("aaa",7),("bbb",1)]
ちなみにモナドに対応メモ.
unionM :: Maybe [(String, Int)] -> Maybe [(String, Int)] -> Maybe [(String, Int)] unionM x y = (liftM2 union) x y print $ unionM (Just [("aaa",3)]) (Just [("aaa",3)])