packages feed

indexation 0.4.2.1 → 0.4.2.2

raw patch · 2 files changed

+17/−16 lines, 2 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

Files

indexation.cabal view
@@ -1,5 +1,5 @@ name: indexation-version: 0.4.2.1+version: 0.4.2.2 category: Data synopsis: Tools for entity indexation description: A set of tools for indexing entities@@ -31,7 +31,7 @@     Indexation.Types     Indexation.Vector   build-depends:-    base >=4.7 && <5,+    base >=4.11 && <5,     bytestring >=0.10.8 && <0.11,     cereal >=0.5.5 && <0.6,     deferred-folds >=0.6 && <0.7,
library/Indexation/Vector.hs view
@@ -3,8 +3,8 @@  import Indexation.Prelude import Data.Vector-import qualified Data.Vector.Mutable as A-import qualified Data.HashMap.Strict as B+import qualified Data.Vector.Mutable as MutableVector+import qualified Data.HashMap.Strict as HashMap import qualified DeferredFolds.UnfoldM as UnfoldM import qualified ListT @@ -16,13 +16,13 @@ populate :: Monad effect => Int -> effect (Int, element) -> effect (Vector element) populate size effect =   do-    mv <- return (unsafeDupablePerformIO (A.unsafeNew size))+    mv <- return (unsafeDupablePerformIO (MutableVector.unsafeNew size))     let       loop stepsRemaining =         if stepsRemaining > 0           then do             (index, element) <- effect-            () <- return (unsafeDupablePerformIO (A.write mv index element))+            () <- return (unsafeDupablePerformIO (MutableVector.write mv index element))             loop (pred stepsRemaining)           else do             !v <- return (unsafeDupablePerformIO (freeze mv))@@ -35,26 +35,27 @@ {-# INLINE indexHashMapWithSize #-} indexHashMapWithSize :: Int -> HashMap element Int -> Vector element indexHashMapWithSize size hashMap =-  unsafePerformIO $ do-    mv <- A.unsafeNew size-    let-      step () element index = unsafeDupablePerformIO (A.write mv index element)-      !() = B.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) unfoldM size unfoldM =   let-    step mv (index, element) = return (unsafeDupablePerformIO (A.write mv index element $> mv))+    step mv (index, element) = return (unsafeDupablePerformIO (MutableVector.write mv index element $> mv))     in do-      !mv <- return (unsafeDupablePerformIO (A.unsafeNew size))+      !mv <- return (unsafeDupablePerformIO (MutableVector.unsafeNew size))       UnfoldM.foldlM' step mv unfoldM       !iv <- return (unsafeDupablePerformIO (unsafeFreeze mv))       return iv  listTInIO :: Int -> ListT IO (Int, element) -> IO (Vector element) listTInIO size listT = do-  mv <- A.unsafeNew size-  flip ListT.traverse_ listT $ \ (index, element) -> A.write mv index element+  mv <- MutableVector.unsafeNew size+  flip ListT.traverse_ listT $ \ (index, element) -> MutableVector.write mv index element   unsafeFreeze mv