-- Zwei Tabellen zu einer Namen-Noten-Tabelle zusammenführen collate :: (Codes, Marks) -> [(Name,Mark)] collate = sortby name . remove . zipp . cross (sortby iden,id) where name (xn,xm) = xn iden (xn,xi) = xi -- Zwei Tupel zu einem verbinden und das 2. Element des 2. Tupels entfernen remove :: [((a,b),(b,c))] -> [(a,b)] remove = map (cross (fst,snd))