impure-containers-0.2: Mutable containers in haskell

Safe HaskellNone
LanguageHaskell2010

Data.Graph.Immutable

Synopsis

Documentation

mapVertices :: (v -> w) -> Graph g e v -> Graph g e w Source #

dijkstra Source #

Arguments

:: (Ord s, Monoid s) 
=> (v -> v -> s -> e -> s) 
-> s

Weight to assign start vertex

-> Vertex g

start

-> Vertex g

end

-> Graph g e v 
-> s 

dijkstraTraversal Source #

Arguments

:: (Ord s, Monoid s) 
=> (v -> v -> s -> e -> s)

Weight combining function

-> s

Weight to assign start vertex

-> Vertex g

Start vertex

-> Graph g e v 
-> Vertices g s 

This is a generalization of Dijkstra's algorithm. This function could be written without unsafely pattern matching on Vertex, but doing so allows us to use a faster heap implementation.

lookupVertex :: Eq v => v -> Graph g e v -> Maybe (Vertex g) Source #

traverseNeighbors_ :: Applicative m => (e -> Vertex g -> v -> m a) -> Vertex g -> Graph g e v -> m () Source #

lookupEdge :: Vertex g -> Vertex g -> Graph g e v -> Maybe e Source #

mutableIForM_ :: PrimMonad m => MVector (PrimState m) a -> (Int -> a -> m b) -> m () Source #

mutableIFoldM' :: PrimMonad m => (a -> Int -> b -> m a) -> a -> MVector (PrimState m) b -> m a Source #

vertices :: Graph g e v -> Vertices g v Source #

size :: Graph g e v -> Size g Source #

verticesTraverse_ :: Monad m => (Vertex g -> v -> m a) -> Vertices g v -> m () Source #

freeze :: PrimMonad m => MGraph g (PrimState m) e v -> m (Graph g e v) Source #

create :: PrimMonad m => (forall g. MGraph g (PrimState m) e v -> m ()) -> m (SomeGraph e v) Source #

Takes a function that builds on an empty MGraph. After the function mutates the MGraph, it is frozen and becomes an immutable SomeGraph.

with :: SomeGraph e v -> (forall g. Graph g e v -> a) -> a Source #