module Data.HashMap.Strict.Extended where
import Control.Monad
import qualified Data.HashMap.Strict as HMS
import Data.Hashable (Hashable)
forWithKeyM ::
(Eq k, Hashable k, Monad m) =>
HMS.HashMap k v1 ->
(k -> v1 -> m v2) ->
m (HMS.HashMap k v2)
forWithKeyM = flip mapWithKeyM
forWithKeyM_ ::
(Eq k, Hashable k, Monad m) =>
HMS.HashMap k v1 ->
(k -> v1 -> m ()) ->
m ()
forWithKeyM_ = flip mapWithKeyM_
mapWithKeyM ::
(Eq k, Hashable k, Monad m) =>
(k -> v1 -> m v2) ->
HMS.HashMap k v1 ->
m (HMS.HashMap k v2)
mapWithKeyM f m = do
fmap mconcat $ forM (HMS.toList m) $ \(k, v) ->
HMS.singleton k <$> f k v
mapWithKeyM_ ::
(Eq k, Hashable k, Monad m) =>
(k -> v1 -> m ()) ->
HMS.HashMap k v1 ->
m ()
mapWithKeyM_ f m = do
forM_ (HMS.toList m) $ \(k, v) ->
HMS.singleton k <$> f k v