edges 0.11.0.1 → 0.11.0.2
raw patch · 4 files changed
+17/−17 lines, 4 filesdep ~deferred-foldsdep ~primitive-extrasPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: deferred-folds, primitive-extras
API changes (from Hackage documentation)
- Edges.Data: edgesUnfoldM :: Monad m => Edges a b -> UnfoldM m (Node a, Node b)
+ Edges.Data: edgesUnfoldlM :: Monad m => Edges a b -> UnfoldlM m (Node a, Node b)
Files
- edges.cabal +3/−3
- library/Edges/Functions.hs +9/−9
- library/Edges/NodeCounting.hs +3/−3
- library/Edges/Prelude.hs +2/−2
edges.cabal view
@@ -1,5 +1,5 @@ name: edges-version: 0.11.0.1+version: 0.11.0.2 category: Graphs synopsis: Tools for efficient immutable graphs description: A set of tools for constructing immutable graphs which are both memory and performance-efficient.@@ -42,7 +42,7 @@ contravariant >=1.4 && <2, data-dword >=0.3.1.2 && <0.4, deepseq >=1.4 && <2,- deferred-folds >=0.6.12 && <0.7,+ deferred-folds >=0.8 && <0.9, foldl >=1.4.2 && <2, hashable >=1.2 && <2, monad-par >=0.3.4.8 && <0.4,@@ -50,7 +50,7 @@ potoki >=2.0.2 && <2.1, potoki-cereal >=0.3 && <0.4, primitive >=0.6.4 && <0.7,- primitive-extras >=0.6.4.1 && <0.7,+ primitive-extras >=0.7 && <0.8, profunctors >=5 && <6, QuickCheck >=2.8.1 && <3, semigroupoids >=5.2 && <6,
library/Edges/Functions.hs view
@@ -4,8 +4,8 @@ import Edges.Prelude import Edges.Types import qualified Data.Vector.Unboxed as UnboxedVector-import qualified DeferredFolds.Unfold as Unfold-import qualified DeferredFolds.UnfoldM as UnfoldM+import qualified DeferredFolds.Unfoldl as Unfoldl+import qualified DeferredFolds.UnfoldlM as UnfoldlM import qualified Control.Foldl as Foldl import qualified Edges.Functions.Folds as Foldl import qualified Control.Monad.Par as Par@@ -19,14 +19,14 @@ edgesTargetAmount :: Edges x target -> Amount target edgesTargetAmount (Edges amount _) = Amount amount -edgesUnfoldM :: Monad m => Edges a b -> UnfoldM m (Node a, Node b)-edgesUnfoldM (Edges _ mpa) =+edgesUnfoldlM :: Monad m => Edges a b -> UnfoldlM m (Node a, Node b)+edgesUnfoldlM (Edges _ mpa) = fmap (\ (aInt, bWord32) -> (Node aInt, Node (fromIntegral bWord32))) $- PrimMultiArray.toAssocsUnfoldM mpa+ PrimMultiArray.toAssocsUnfoldlM mpa edgesList :: Edges a b -> [(Node a, Node b)] edgesList edges =- UnfoldM.fold Foldl.list (edgesUnfoldM edges)+ UnfoldlM.fold Foldl.list (edgesUnfoldlM edges) listEdges :: [(Node a, Node b)] -> Edges a b listEdges list =@@ -70,9 +70,9 @@ unindexNodeCounts :: (Eq entity, Hashable entity) => (Int -> Maybe entity) -> NodeCounts entity -> HashMap entity Word128 unindexNodeCounts lookup (NodeCounts vector) = let- unfold = do- index <- Unfold.intsInRange 0 (pred (UnboxedVector.length vector))+ unfoldl = do+ index <- Unfoldl.intsInRange 0 (pred (UnboxedVector.length vector)) return $ do entity <- lookup index return (entity, fromIntegral (UnboxedVector.unsafeIndex vector index))- in Unfold.fold (Foldl.hashMapByMapMaybe id) unfold+ in Unfoldl.fold (Foldl.hashMapByMapMaybe id) unfoldl
library/Edges/NodeCounting.hs view
@@ -16,7 +16,7 @@ import qualified PrimitiveExtras.PrimArray as PrimArray import qualified PrimitiveExtras.PrimMultiArray as PrimMultiArray import qualified PrimitiveExtras.TVarArray as TVarArray-import qualified DeferredFolds.UnfoldM as UnfoldM+import qualified DeferredFolds.UnfoldlM as UnfoldlM import qualified Data.Vector.Unboxed as UnboxedVector import qualified Data.Vector.Unboxed.Mutable as MutableUnboxedVector @@ -25,7 +25,7 @@ nodeTargets (Edges targetAmount edgesPma) (Node sourceIndex) = do unsafePerformIO $ do targetCountsMVec <- MutableUnboxedVector.new targetAmount- UnfoldM.forM_ (fmap fromIntegral $ PrimMultiArray.toUnfoldAtM edgesPma sourceIndex) $ \ targetIndex -> do+ UnfoldlM.forM_ (fmap fromIntegral $ PrimMultiArray.toUnfoldlAtM edgesPma sourceIndex) $ \ targetIndex -> do targetCount <- MutableUnboxedVector.read targetCountsMVec targetIndex MutableUnboxedVector.unsafeWrite targetCountsMVec targetIndex (targetCount + 1) targetCountsVec <- UnboxedVector.unsafeFreeze targetCountsMVec@@ -48,7 +48,7 @@ unsafePerformIO $ do targetCountsMVec <- MutableUnboxedVector.new targetAmount flip UnboxedVector.imapM_ sourceCountsVec $ \ sourceIndex sourceCount -> if sourceCount >= minSourceCount- then UnfoldM.forM_ (fmap fromIntegral $ PrimMultiArray.toUnfoldAtM edgesPma sourceIndex) $ \ targetIndex -> do+ then UnfoldlM.forM_ (fmap fromIntegral $ PrimMultiArray.toUnfoldlAtM edgesPma sourceIndex) $ \ targetIndex -> do targetCount <- MutableUnboxedVector.read targetCountsMVec targetIndex MutableUnboxedVector.unsafeWrite targetCountsMVec targetIndex (targetCount + sourceCount) else return ()
library/Edges/Prelude.hs view
@@ -110,8 +110,8 @@ -- deferred-folds --------------------------import DeferredFolds.Unfold as Exports (Unfold(..))-import DeferredFolds.UnfoldM as Exports (UnfoldM(..))+import DeferredFolds.Unfoldl as Exports (Unfoldl(..))+import DeferredFolds.UnfoldlM as Exports (UnfoldlM(..)) -- foldl -------------------------