indexation 0.5 → 0.5.0.1
raw patch · 3 files changed
+11/−9 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- indexation.cabal +1/−1
- library/Indexation/Types.hs +1/−1
- library/Indexation/Vector.hs +9/−7
indexation.cabal view
@@ -1,5 +1,5 @@ name: indexation-version: 0.5+version: 0.5.0.1 category: Data synopsis: Tools for entity indexation description: A set of tools for indexing entities
library/Indexation/Types.hs view
@@ -5,7 +5,7 @@ import qualified Data.HashTable.IO as HashtablesIO -data Indexer entity = Indexer {-# UNPACK #-} !(IORef Int) {-# UNPACK #-} !(HashtablesIO.CuckooHashTable entity Int)+data Indexer entity = Indexer {-# UNPACK #-} !(IORef Int) {-# UNPACK #-} !(HashtablesIO.BasicHashTable entity Int) data IndexTable entity = IndexTable {-# UNPACK #-} !Int {-# UNPACK #-} !(HashMap entity Int)
library/Indexation/Vector.hs view
@@ -7,6 +7,7 @@ import qualified Data.HashMap.Strict as HashMap import qualified DeferredFolds.UnfoldM as UnfoldM import qualified Data.HashTable.IO as HashtablesIO+import qualified Data.HashTable.Class as HashtablesClass {-|@@ -35,12 +36,13 @@ {-# INLINE indexHashMapWithSize #-} indexHashMapWithSize :: Int -> HashMap element Int -> Vector element indexHashMapWithSize size hashMap =- unsafePerformIO $ do- mv <- MutableVector.unsafeNew size- let- step () element index = unsafeDupablePerformIO (MutableVector.write mv index element)- !() = HashMap.foldlWithKey' step () hashMap- in freeze mv+ runST $ do+ mv <- MutableVector.new size+ HashMap.foldrWithKey+ (\ element index action -> MutableVector.write mv index element >> action)+ (return ())+ hashMap+ freeze mv {-# NOINLINE unfoldM #-} unfoldM :: Monad m => Int -> UnfoldM m (Int, element) -> m (Vector element)@@ -53,7 +55,7 @@ !iv <- return (unsafeDupablePerformIO (unsafeFreeze mv)) return iv -hashTable :: Int -> HashtablesIO.CuckooHashTable element Int -> IO (Vector element)+hashTable :: HashtablesClass.HashTable t => Int -> HashtablesIO.IOHashTable t element Int -> IO (Vector element) hashTable size hashTable = do mv <- MutableVector.unsafeNew size flip HashtablesIO.mapM_ hashTable $ \ (element, index) -> MutableVector.write mv index element