module TypeMachine.Internal.Utils (removeKeys, keepKeys) where import qualified Data.Map.Strict as Map removeKeys :: (Eq k) => [k] -> Map.Map k v -> Map.Map k v removeKeys :: forall k v. Eq k => [k] -> Map k v -> Map k v removeKeys [k] keys = (k -> v -> Bool) -> Map k v -> Map k v forall k a. (k -> a -> Bool) -> Map k a -> Map k a Map.filterWithKey (\k k v _ -> k k k -> [k] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [k] keys) keepKeys :: (Eq k) => [k] -> Map.Map k v -> Map.Map k v keepKeys :: forall k v. Eq k => [k] -> Map k v -> Map k v keepKeys [k] keys = (k -> v -> Bool) -> Map k v -> Map k v forall k a. (k -> a -> Bool) -> Map k a -> Map k a Map.filterWithKey (\k k v _ -> k k k -> [k] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [k] keys)