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 +1/−1
- src/Data/Graph/Immutable.hs +14/−0
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)