rangeSort1 :: [Data] -> [(Data, [Data])] rangeSort1 r = mapMaybe (\x -> let l = filter (contains x) . filter (/=x) in case l r of [] -> Nothing otherwise -> Just (x, l r) ) r