{- Exercise 14.1 -} parts :: [a] -> [[[a]]] parts = undefined {- Exercise 14.2 -} type Name = String type Id = Integer type Points = Integer type Rank = Integer -- 14.2.1 parseIds :: String -> [(Name, Id)] parseIds = undefined -- 14.2.2 parsePoints :: String -> [(Id, Points)] parsePoints = undefined -- 14.2.3 rankNames :: [(Name, Id)] -> [(Id, Points)] -> [(Name, Points, Rank)] rankNames = undefined -- 14.2.4 showList :: [(Name, Points, Rank)] -> String showList :: undefined {- TESTS -} list1 = "HASLBECK 101370\n\ \THIEMANN 202404\n\ \MUSTERMANN 444789\n\ \MUELLER 310131" list2 = "101370 10\n\ \202404 9\n\ \444789 7\n\ \310131 10\n\ \101370 8\n\ \202404 10\n\ \444789 2\n\ \310131 8\n\ \202404 3"