module EL.Private.Ranges where merge_sorted :: Ord n => [(n, n)] -> [(n, n)] merge_sorted [] = [] merge_sorted [x] = [x] merge_sorted ((s1, e1) : (s2, e2) : rest) | e1 >= e2 = merge_sorted ((s1, e1) : rest) | e1 >= s2 = merge_sorted ((s1, e2) : rest) | otherwise = (s1, e1) : merge_sorted ((s2, e2) : rest)