distributed-process-0.4.0: src/Control/Distributed/Process/Internal/StrictContainerAccessors.hs
module Control.Distributed.Process.Internal.StrictContainerAccessors
( mapMaybe
, mapDefault
) where
import Prelude hiding (map)
import Data.Accessor
import Data.Map (Map)
import qualified Data.Map as Map (lookup, insert, delete, findWithDefault)
mapMaybe :: Ord key => key -> Accessor (Map key elem) (Maybe elem)
mapMaybe key = accessor
(Map.lookup key)
(\mVal map -> case mVal of
Nothing -> Map.delete key map
Just val -> val `seq` Map.insert key val map)
mapDefault :: Ord key => elem -> key -> Accessor (Map key elem) elem
mapDefault def key = accessor
(Map.findWithDefault def key)
(\val map -> val `seq` Map.insert key val map)