Given a list of tuples
like this:
dic =
[(1,"aa"),(1,"cc"),(2,"aa"),(3,"ff"),(3,"gg"),(1,"bb")]
You have to group like
below.
grp =
[(1,["aa","bb","cc"]), (2, ["aa"]), (3,
["ff","gg"])]
ListUtil.hs
{-# LANGUAGE TransformListComp #-} import GHC.Exts import Data.List import Data.Function (on) process :: [(Integer, String)] -> [(Integer, [String])] process list = [(the a, b) | let info = [ (x, y) | (x, y) <- list, then sortWith by y ], (a, b) <- info, then group by a using groupWith]
*Main> :load ListUtil.hs [1 of 1] Compiling Main ( ListUtil.hs, interpreted ) Ok, modules loaded: Main. *Main> *Main> process [(1,"aa"),(1,"cc"),(2,"aa"),(3,"ff"),(3,"gg"),(1,"bb")] [(1,["aa","bb","cc"]),(2,["aa"]),(3,["ff","gg"])] *Main>
No comments:
Post a Comment