diff options
Diffstat (limited to 'compiler/utils/ListSetOps.hs')
-rw-r--r-- | compiler/utils/ListSetOps.hs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/utils/ListSetOps.hs b/compiler/utils/ListSetOps.hs index c311ac9c85..a0fd9879bc 100644 --- a/compiler/utils/ListSetOps.hs +++ b/compiler/utils/ListSetOps.hs @@ -8,7 +8,7 @@ {-# LANGUAGE CPP #-} module ListSetOps ( - unionLists, minusList, + unionLists, minusList, deleteBys, -- Association lists Assoc, assoc, assocMaybe, assocUsing, assocDefault, assocDefaultUsing, @@ -37,6 +37,11 @@ getNth :: Outputable a => [a] -> Int -> a getNth xs n = ASSERT2( xs `lengthExceeds` n, ppr n $$ ppr xs ) xs !! n +deleteBys :: (a -> a -> Bool) -> [a] -> [a] -> [a] +-- (deleteBys eq xs ys) returns xs-ys, using the given equality function +-- Just like 'Data.List.delete' but with an equality function +deleteBys eq xs ys = foldl (flip (deleteBy eq)) xs ys + {- ************************************************************************ * * |