Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Key
- data SlotMap m a
- empty :: PrimMonad m => m (SlotMap m a)
- clone :: PrimMonad m => SlotMap m a -> m (SlotMap m a)
- lookup :: PrimMonad m => Key -> SlotMap m a -> m (Maybe a)
- delete :: PrimMonad m => Key -> SlotMap m a -> m ()
- unsafeDelete :: PrimMonad m => Key -> SlotMap m a -> m ()
- insert :: PrimMonad m => a -> SlotMap m a -> m Key
- update :: PrimMonad m => SlotMap m a -> (a -> a) -> Key -> m ()
- unsafeUpdate :: PrimMonad m => SlotMap m a -> (a -> a) -> Key -> m ()
- null :: PrimMonad m => SlotMap m a -> m Bool
- capacity :: PrimMonad m => SlotMap m a -> m Int
- size :: PrimMonad m => SlotMap m a -> m Int
- foldr :: PrimMonad m => (a -> b -> b) -> b -> SlotMap m a -> m b
- map :: PrimMonad m => (a -> a) -> SlotMap m a -> m ()
- elems :: PrimMonad m => SlotMap m a -> m [a]
Documentation
Construction
clone :: PrimMonad m => SlotMap m a -> m (SlotMap m a) Source #
Allocate new SlotMap
and copy. Maintains keys.
Constant Operations
lookup :: PrimMonad m => Key -> SlotMap m a -> m (Maybe a) Source #
Return value associated with key or Nothing
if the slot is empty O(1).
delete :: PrimMonad m => Key -> SlotMap m a -> m () Source #
Delete value at key and mark slot for reuse O(1).
unsafeDelete :: PrimMonad m => Key -> SlotMap m a -> m () Source #
Same as delete
but does not validate the key O(1).
update :: PrimMonad m => SlotMap m a -> (a -> a) -> Key -> m () Source #
Update item at existing slot O(1). Does nothing if the key is invalid.
unsafeUpdate :: PrimMonad m => SlotMap m a -> (a -> a) -> Key -> m () Source #
Same as update
but does not validate the key O(1).
Linear Operations
foldr :: PrimMonad m => (a -> b -> b) -> b -> SlotMap m a -> m b Source #
Fold over every full slot O(N) where N = capacity.