packages feed

impure-containers 0.4.1 → 0.4.2

raw patch · 2 files changed

+15/−1 lines, 2 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

+ Data.Graph.Immutable: mapEdges :: (Vertex g -> Vertex g -> e -> d) -> Graph g e v -> Graph g d v

Files

impure-containers.cabal view
@@ -1,5 +1,5 @@ name:                impure-containers-version:             0.4.1+version:             0.4.2 synopsis:            Mutable containers in haskell description:         Please see README.md homepage:            https://github.com/andrewthad/impure-containers#readme
src/Data/Graph/Immutable.hs view
@@ -16,6 +16,7 @@   , lookupEdge   , atVertex   , mapVertices+  , mapEdges   , traverseVertices_   , traverseEdges_   , traverseNeighbors_@@ -80,6 +81,19 @@ mapVertices :: (Vertex g -> a -> b) -> Graph g e a -> Graph g e b mapVertices f (Graph sg) = Graph sg   { graphVertices = V.imap (coerce f) (graphVertices sg) }++-- | Map of the edges in the graph.+mapEdges :: (Vertex g -> Vertex g -> e -> d) -> Graph g e v -> Graph g d v+mapEdges f (Graph (SomeGraph v verts edges)) = Graph $ SomeGraph v verts $ +  V.imap+    ( \outerIx edgeVals ->+        let vertIxs = V.unsafeIndex verts outerIx+         in V.imap+              ( \sourceIx edgeVal -> +                  let destIx = U.unsafeIndex vertIxs sourceIx+                   in f (Vertex sourceIx) (Vertex destIx) edgeVal+              ) edgeVals+    ) edges  traverseVertices_ :: Applicative m => (Vertex g -> v -> m a) -> Graph g e v -> m () traverseVertices_ f g = verticesTraverse_ f (vertices g)