Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Multimap k v
- type Association k v = (Eq k, Hashable k, Eq v, Hashable v)
- new :: STM (Multimap k v)
- newIO :: IO (Multimap k v)
- insert :: Association k v => v -> k -> Multimap k v -> STM ()
- delete :: Association k v => v -> k -> Multimap k v -> STM ()
- lookup :: Association k v => v -> k -> Multimap k v -> STM Bool
- focus :: Association k v => StrategyM STM () r -> v -> k -> Multimap k v -> STM r
- foldM :: (a -> (k, v) -> STM a) -> a -> Multimap k v -> STM a
- null :: Multimap k v -> STM Bool
Documentation
type Association k v = (Eq k, Hashable k, Eq v, Hashable v) Source
A standard constraint for items.
newIO :: IO (Multimap k v) Source
Construct a new multimap in IO.
This is useful for creating it on a top-level using unsafePerformIO
,
because using atomically
inside unsafePerformIO
isn't possible.
insert :: Association k v => v -> k -> Multimap k v -> STM () Source
Insert an item.
delete :: Association k v => v -> k -> Multimap k v -> STM () Source
Delete an item by a value and a key.
lookup :: Association k v => v -> k -> Multimap k v -> STM Bool Source
Look up an item by a value and a key.
focus :: Association k v => StrategyM STM () r -> v -> k -> Multimap k v -> STM r Source
Focus on an item with a strategy by a value and a key.
This function allows to perform simultaneous lookup and modification.
The strategy is over a unit since we already know, which value we're focusing on and it doesn't make sense to replace it, however we still can decide wether to keep or remove it.