dynamic-mvector 0.1.0.3 → 0.1.0.4
raw patch · 2 files changed
+16/−12 lines, 2 filesdep ~vectorPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: vector
API changes (from Hackage documentation)
Files
- Data/Vector/Mutable/Dynamic.hs +14/−10
- dynamic-mvector.cabal +2/−2
Data/Vector/Mutable/Dynamic.hs view
@@ -269,25 +269,29 @@ -- | Read the back value and remove it from the vector. Throws an error if the vector is empty. popBack :: PrimMonad m => MVector (PrimState m) a -> m a popBack (MVector v) = do- MVectorData s v' <- readMutVar v+ MVectorData s vec <- readMutVar v if (s <= 0) then error "Data.Vector.Mutable.Dynamic: popBack: empty vector" else do - a <- MV.unsafeRead v' (s - 1)- when (s < quot (MV.length v') 2) $ do - v'' <- MV.unsafeGrow v' (s - 1)- writeMutVar v (MVectorData (s - 1) v'')+ a <- MV.unsafeRead vec (s - 1)+ if (s < quot (MV.length vec) 2) then do+ vec' <- MV.unsafeGrow vec (s - 1)+ writeMutVar v (MVectorData (s - 1) vec')+ else+ writeMutVar v (MVectorData (s - 1) vec) return a {-# INLINABLE popBack #-} -- | Read the back value and remove it from the vector, without checking. unsafePopBack :: PrimMonad m => MVector (PrimState m) a -> m a unsafePopBack (MVector v) = do- MVectorData s v' <- readMutVar v- a <- MV.unsafeRead v' (s - 1)- when (s < quot (MV.length v') 2) $ do - v'' <- MV.unsafeGrow v' (s - 1)- writeMutVar v (MVectorData (s - 1) v'')+ MVectorData s vec <- readMutVar v+ a <- MV.unsafeRead vec (s - 1)+ if (s < quot (MV.length vec) 2) then do + vec' <- MV.unsafeGrow vec (s - 1)+ writeMutVar v (MVectorData (s - 1) vec')+ else+ writeMutVar v (MVectorData (s - 1) vec) return a {-# INLINABLE unsafePopBack #-}
dynamic-mvector.cabal view
@@ -1,6 +1,6 @@ name: dynamic-mvector-version: 0.1.0.3+version: 0.1.0.4 synopsis: A wrapper around MVector that enables pushing, popping and extending. homepage: https://github.com/AndrasKovacs/dynamic-mvector license: BSD3@@ -13,5 +13,5 @@ library exposed-modules: Data.Vector.Mutable.Dynamic- build-depends: base >=4.7 && <4.9, primitive >=0.5 && <0.7, vector >=0.10 && <0.11+ build-depends: base >=4.7 && <4.9, primitive >=0.5 && <0.7, vector >=0.10 default-language: Haskell2010