diff options
Diffstat (limited to 'compiler/GHC/Data/List/SetOps.hs')
-rw-r--r-- | compiler/GHC/Data/List/SetOps.hs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/GHC/Data/List/SetOps.hs b/compiler/GHC/Data/List/SetOps.hs index 99bf2fe903..5aff54c949 100644 --- a/compiler/GHC/Data/List/SetOps.hs +++ b/compiler/GHC/Data/List/SetOps.hs @@ -18,7 +18,7 @@ module GHC.Data.List.SetOps ( Assoc, assoc, assocMaybe, assocUsing, assocDefault, assocDefaultUsing, -- Duplicate handling - hasNoDups, removeDups, nubOrdBy, findDupsEq, + hasNoDups, removeDups, removeDupsOn, nubOrdBy, findDupsEq, equivClasses, -- Indexing @@ -37,6 +37,7 @@ import GHC.Utils.Misc import qualified Data.List as L import qualified Data.List.NonEmpty as NE import Data.List.NonEmpty (NonEmpty(..)) +import Data.Ord (comparing) import qualified Data.Set as S getNth :: Outputable a => [a] -> Int -> a @@ -193,6 +194,9 @@ removeDups cmp xs collect_dups dups_so_far (x :| []) = (dups_so_far, x) collect_dups dups_so_far dups@(x :| _) = (dups:dups_so_far, x) +removeDupsOn :: Ord b => (a -> b) -> [a] -> ([a], [NonEmpty a]) +removeDupsOn f x = removeDups (comparing f) x + -- | Remove the duplicates from a list using the provided -- comparison function. nubOrdBy :: (a -> a -> Ordering) -> [a] -> [a] |