ecta-1.0.0.0: src/Data/HashTable/Extended.hs
module Data.HashTable.Extended (
getKeys
, resetHashTable
, AnyHashTable(..)
) where
import Data.Hashable ( Hashable )
import Data.HashTable.Class ( HashTable )
import qualified Data.HashTable.IO as HT
------------------------------------------------------------------------------
getKeys :: (HashTable h) => HT.IOHashTable h k v -> IO [k]
getKeys ht = HT.foldM f [] ht
where f !l !(k, _) = return (k : l)
resetHashTable :: AnyHashTable -> IO ()
resetHashTable (AnyHashTable ht) = do
keys <- getKeys ht
mapM_ (\k -> HT.mutate ht k (const (Nothing, ()))) keys
data AnyHashTable where
AnyHashTable :: (HashTable h, Eq k, Hashable k) => HT.IOHashTable h k v -> AnyHashTable