stm-containers-0.1.3: Containers for STM

Safe HaskellNone

STMContainers.Multimap

Synopsis

Documentation

data Multimap k v Source

A multimap, based on an STM-specialized hash array mapped trie.

Basically it's just a wrapper API around Map k (Set v).

type Association k v = (Eq k, Hashable k, Eq v, Hashable v)Source

A standard constraint for items.

new :: STM (Multimap k v)Source

Construct a new multimap.

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 BoolSource

Look up an item by a value and a key.

focus :: Association k v => StrategyM STM () r -> v -> k -> Multimap k v -> STM rSource

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 still decide wether to keep or remove it.

foldM :: (a -> (k, v) -> STM a) -> a -> Multimap k v -> STM aSource

Fold all the items.

null :: Multimap k v -> STM BoolSource

Check on being empty.