Copyright | (c) Dennis Gosnell 2023 |
---|---|
License | BSD3 |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Synopsis
- newtype IdMapKey = IdMapKey {
- unIdMapKey :: Int
- data IdMap a = IdMap {}
- initialId :: Int
- succId :: Int -> Int
- emptyIdMap :: IdMap a
- insertIdMap :: a -> IdMap a -> (IdMapKey, IdMap a)
- singletonIdMap :: a -> (IdMapKey, IdMap a)
- lookupIdMap :: IdMapKey -> IdMap a -> Maybe a
- keysIdMap :: IdMap a -> [IdMapKey]
- deleteIdMap :: IdMapKey -> IdMap a -> IdMap a
Documentation
Instances
Instances
Foldable IdMap Source # | |
Defined in Termonad.IdMap.Internal fold :: Monoid m => IdMap m -> m # foldMap :: Monoid m => (a -> m) -> IdMap a -> m # foldMap' :: Monoid m => (a -> m) -> IdMap a -> m # foldr :: (a -> b -> b) -> b -> IdMap a -> b # foldr' :: (a -> b -> b) -> b -> IdMap a -> b # foldl :: (b -> a -> b) -> b -> IdMap a -> b # foldl' :: (b -> a -> b) -> b -> IdMap a -> b # foldr1 :: (a -> a -> a) -> IdMap a -> a # foldl1 :: (a -> a -> a) -> IdMap a -> a # elem :: Eq a => a -> IdMap a -> Bool # maximum :: Ord a => IdMap a -> a # minimum :: Ord a => IdMap a -> a # | |
Traversable IdMap Source # | |
Functor IdMap Source # | |
FoldableWithIndex Int IdMap Source # | |
Defined in Termonad.IdMap.Internal | |
Show a => Show (IdMap a) Source # | |
Eq a => Eq (IdMap a) Source # |
Note that if you delete and reinsert a value, it will get a different key, so will no longer be equal.
However,
|
Ixed (IdMap a) Source # | |
Defined in Termonad.IdMap.Internal | |
type Index (IdMap a) Source # | |
Defined in Termonad.IdMap.Internal | |
type IxValue (IdMap a) Source # | |
Defined in Termonad.IdMap.Internal |
emptyIdMap :: IdMap a Source #
An initial IdMap
with no values.
>>>
emptyIdMap
IdMap {idMap = fromList [], nextId = 0}
insertIdMap :: a -> IdMap a -> (IdMapKey, IdMap a) Source #
Insert a value into an IdMap
. Returns the key for the newly inserted
item.
>>>
let (key, idmap) = insertIdMap "hello" emptyIdMap
>>>
(key, idmap)
(IdMapKey {unIdMapKey = 0},IdMap {idMap = fromList [(0,"hello")], nextId = 1})
>>>
insertIdMap "zoom" idmap
(IdMapKey {unIdMapKey = 1},IdMap {idMap = fromList [(0,"hello"),(1,"zoom")], nextId = 2})
singletonIdMap :: a -> (IdMapKey, IdMap a) Source #
Create an IdMap
with a single value.
>>>
singletonIdMap "hello"
(IdMapKey {unIdMapKey = 0},IdMap {idMap = fromList [(0,"hello")], nextId = 1})
\a -> insertIdMap a emptyIdMap == singletonIdMap a
deleteIdMap :: IdMapKey -> IdMap a -> IdMap a Source #
Delete a key and its value from the map. When the key is not a member of the map, the original map is returned.
>>>
let (key, idmap) = singletonIdMap "hello"
>>>
let (_, idmap') = insertIdMap "bye" idmap
>>>
deleteIdMap key idmap'
IdMap {idMap = fromList [(1,"bye")], nextId = 2}
Deleting a key that does not exist just returns the old map:
>>>
deleteIdMap key idmap'
IdMap {idMap = fromList [(1,"bye")], nextId = 2}