module Exercise_7 where import Data.List {-WETT-} trancl :: Eq a => [(Integer,(a,a))] -> [(Integer,(a,a))] comp xs ys = [(c1+c2,(a,c)) | (c1,(a,b_1)) <- xs, (c2,(b_2,c)) <- ys, b_1 == b_2] trancl xs = let aux xs acc = if (filterMins (acc ++ (comp xs acc))) == acc then acc else aux xs (filterMins (acc ++ (comp xs acc))) in filterMins (aux xs xs) filterMins xs = filter (\(c_1,a) -> and [ c_1 <= c_2| (c_2,a2) <- xs, a2 == a]) (nub xs) {-TTEW-}