比方說,我有一個像下面[(LName, FName, Credits)]
其中元組的列表:Haskell如何將元組列表中的一列中的值相加,'「按2個元素進行分組?
type LName = String
type FName = String
type Credits = Int
如何我總結由LName
和FName
兩個分組一個人的所有學分?我發現了一個函數,可以用於[(String, Int)]
格式的元組列表,但是我無法使用格式[(String, String, Int)]
。
這是我對這個討論Working with list of tuples發現功能:
getSumCredits :: [(String, Int)] -> [(String, Int)]
getSumCredits = map (foo . unzip) . groupBy (\x y -> fst x == fst y) . sort
where foo (names, vals) = (head names, sum vals)
我想我不能得到它,因爲函數映射的工作或解壓縮。
只是轉換'[(LName的,FName參數被改寫, Credits)]''到'[(String,Int)]',然後使用上面的函數.... lambda和map會爲你做這個。 – jamshidh
@jamshidh謝謝我會盡力做那樣的事!你的意思是LName ++ FName來獲得一個字符串? – Caro
您也可以將其轉換爲((LName,Fname),Credits)。這是一個兩元素元組,其中第一個元素也是一個二元元組。然後你可以匹配第一個元素。 –