Skip to content

Commit

Permalink
added filterWithKey to IsMap
Browse files Browse the repository at this point in the history
  • Loading branch information
BebeSparkelSparkel committed Jul 12, 2024
1 parent 17998c3 commit be474de
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
5 changes: 5 additions & 0 deletions mono-traversable/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# ChangeLog for mono-traversable

## 1.0.19.0

* Added `filterWithKey` to class `IsMap`
[#231](https://github.com/snoyberg/mono-traversable/pull/231)

## 1.0.18.0

* Added MonoPointed instance for text Builder
Expand Down
2 changes: 1 addition & 1 deletion mono-traversable/package.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: mono-traversable
version: 1.0.18.0
version: 1.0.19.0
synopsis: Type classes for mapping, folding, and traversing monomorphic containers
description: Please see the README at <https://www.stackage.org/package/mono-traversable>
category: Data
Expand Down
16 changes: 14 additions & 2 deletions mono-traversable/src/Data/Containers.hs
Original file line number Diff line number Diff line change
Expand Up @@ -548,8 +548,14 @@ class (MonoTraversable map, SetContainer map) => IsMap map where
-- | Filter values in a map.
--
-- @since 1.0.9.0
filterMap :: IsMap map => (MapValue map -> Bool) -> map -> map
filterMap p = mapFromList . filter (p . snd) . mapToList
filterMap :: (MapValue map -> Bool) -> map -> map
filterMap = filterWithKey . const

-- | Filter a map with keys and values.
--
-- @since 1.0.19.0
filterWithKey :: (ContainerKey map -> MapValue map -> Bool) -> map -> map
filterWithKey p = mapFromList . filter (uncurry p) . mapToList

-- | This instance uses the functions from "Data.Map.Strict".
instance Ord key => IsMap (Map.Map key value) where
Expand Down Expand Up @@ -599,6 +605,8 @@ instance Ord key => IsMap (Map.Map key value) where
{-# INLINE omapKeysWith #-}
filterMap = Map.filter
{-# INLINE filterMap #-}
filterWithKey = Map.filterWithKey
{-# INLINE filterWithKey #-}

-- | This instance uses the functions from "Data.HashMap.Strict".
instance (Eq key, Hashable key) => IsMap (HashMap.HashMap key value) where
Expand Down Expand Up @@ -636,6 +644,8 @@ instance (Eq key, Hashable key) => IsMap (HashMap.HashMap key value) where
--mapKeysWith = HashMap.mapKeysWith
filterMap = HashMap.filter
{-# INLINE filterMap #-}
filterWithKey = HashMap.filterWithKey
{-# INLINE filterWithKey #-}

-- | This instance uses the functions from "Data.IntMap.Strict".
instance IsMap (IntMap.IntMap value) where
Expand Down Expand Up @@ -684,6 +694,8 @@ instance IsMap (IntMap.IntMap value) where
{-# INLINE omapKeysWith #-}
filterMap = IntMap.filter
{-# INLINE filterMap #-}
filterWithKey = IntMap.filterWithKey
{-# INLINE filterWithKey #-}

instance Eq key => IsMap [(key, value)] where
type MapValue [(key, value)] = value
Expand Down

0 comments on commit be474de

Please sign in to comment.