A module that implements a dictionary/hash table
- class Key a where
- newtype Dictionary a = Dictionary (Trie a)
- primeL :: Int
- primeR :: Int
- empty :: Dictionary a
- insert :: Key k => k -> a -> Dictionary a -> Dictionary a
- insertNotOverwrite :: Key k => k -> a -> Dictionary a -> Dictionary a
- lookup :: Key k => k -> Dictionary a -> Maybe a
- lookupAll :: Key k => k -> Dictionary a -> [a]
- fromList :: Key k => [(k, a)] -> Dictionary a
- fromListNotOverwrite :: Key k => [(k, a)] -> Dictionary a
- update :: Key k => k -> a -> Dictionary a -> Dictionary a
- isIn :: (Key k, Eq k) => k -> Dictionary (k, a) -> Bool
- nub :: (Key k, Eq k) => [k] -> [k]
- nubSub :: (Key k, Eq k) => [k] -> Dictionary (k, ()) -> [k]
- data Trie a = Trie ![a] !(IntMap (Trie a))
- insertTrie :: Bool -> [Int] -> a -> Trie a -> Trie a
- lookupTrie :: [Int] -> Trie a -> Maybe (Trie a)
- updateTrie :: [Int] -> a -> Trie a -> Trie a
Documentation
newtype Dictionary a Source
Dictionary (Trie a) |
empty :: Dictionary aSource
insert :: Key k => k -> a -> Dictionary a -> Dictionary aSource
insertNotOverwrite :: Key k => k -> a -> Dictionary a -> Dictionary aSource
lookup :: Key k => k -> Dictionary a -> Maybe aSource
lookupAll :: Key k => k -> Dictionary a -> [a]Source
fromList :: Key k => [(k, a)] -> Dictionary aSource
fromListNotOverwrite :: Key k => [(k, a)] -> Dictionary aSource
update :: Key k => k -> a -> Dictionary a -> Dictionary aSource
the dictionary (k,a) version of elem
updateTrie :: [Int] -> a -> Trie a -> Trie aSource