san*_*nic 2 haskell tuples function list
我需要从这里开始:
[(2,"a"), (1,"a"), (1,"b"), (1,"c"), (2,"dd")]
Run Code Online (Sandbox Code Playgroud)
到这里:
[([1, 2], "a"), ([1], "b"), ([1], "c"), ([2], "dd")]
Run Code Online (Sandbox Code Playgroud)
到目前为止我有
combineInts listTuple = someFunc (map (\(num, str) -> ([num], str)) listTuple)
Run Code Online (Sandbox Code Playgroud)
其中"someFunc"是我仍需要弄清楚并实现的位.我相信它应该利用foldr,map和/或intercalate来实现我的目标.有任何想法吗?
这应该做:
import Data.Function (on)
import Data.List (groupBy, sort, sortBy)
out = map f . groupBy ((==) `on` snd) . sortBy (compare `on` snd) $ input
where input = [(2,"a"),(1,"a"),(1,"b"),(1,"c"),(2,"dd")]
f xs@(x:_) = (sort $ map fst xs, snd x)
main = print out
Run Code Online (Sandbox Code Playgroud)