Safe Haskell | None |
---|---|
Language | Haskell2010 |
- dijkstra :: (Ord s, Monoid s) => (v -> v -> s -> e -> s) -> s -> Vertex g -> Vertex g -> Graph g e v -> s
- dijkstraTraversal :: (Ord s, Monoid s) => (v -> v -> s -> e -> s) -> s -> Vertex g -> Graph g e v -> Vertices g s
- lookupVertex :: Eq v => v -> Graph g e v -> Maybe (Vertex g)
- mapVertices :: (Vertex g -> a -> b) -> Graph g e a -> Graph g e b
- traverseVertices_ :: Applicative m => (Vertex g -> v -> m a) -> Graph g e v -> m ()
- traverseEdges_ :: Applicative m => (Vertex g -> Vertex g -> v -> v -> e -> m a) -> Graph g e v -> m ()
- traverseNeighbors_ :: Applicative m => (Vertex g -> v -> e -> m a) -> Vertex g -> Graph g e v -> m ()
- lookupEdge :: Vertex g -> Vertex g -> Graph g e v -> Maybe e
- mutableIForM_ :: PrimMonad m => MVector (PrimState m) a -> (Int -> a -> m b) -> m ()
- mutableIFoldM' :: PrimMonad m => (a -> Int -> b -> m a) -> a -> MVector (PrimState m) b -> m a
- vertices :: Graph g e v -> Vertices g v
- size :: Graph g e v -> Size g
- unSize :: Size g -> Int
- vertexInt :: Vertex g -> Int
- verticesToVertexList :: Vertices g v -> [Vertex g]
- verticesTraverse :: Applicative m => (Vertex g -> v -> m a) -> Vertices g v -> m (Vertices g a)
- verticesTraverse_ :: Applicative m => (Vertex g -> v -> m a) -> Vertices g v -> m ()
- verticesToVector :: Vertices g v -> Vector v
- verticesRead :: Vertices g v -> Vertex g -> v
- verticesLength :: Vertices g v -> Int
- verticesFreeze :: PrimMonad m => MVertices g (PrimState m) v -> m (Vertices g v)
- verticesThaw :: PrimMonad m => Vertices g v -> m (MVertices g (PrimState m) v)
- freeze :: PrimMonad m => MGraph g (PrimState m) e v -> m (Graph g e v)
- create :: PrimMonad m => (forall g. MGraph g (PrimState m) e v -> m ()) -> m (SomeGraph e v)
- with :: SomeGraph e v -> (forall g. Graph g e v -> a) -> a
Documentation
:: (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.
mapVertices :: (Vertex g -> a -> b) -> Graph g e a -> Graph g e b Source #
Not the same as fmap because the function also takes the vertex id.
traverseVertices_ :: Applicative m => (Vertex g -> v -> m a) -> Graph g e v -> m () Source #
traverseEdges_ :: Applicative m => (Vertex g -> Vertex g -> v -> v -> e -> m a) -> Graph g e v -> m () Source #
This traverses every edge in the entire graph.
traverseNeighbors_ :: Applicative m => (Vertex g -> v -> e -> m a) -> Vertex g -> Graph g e v -> m () Source #
Change this to use unsafeRead some time soon.
mutableIFoldM' :: PrimMonad m => (a -> Int -> b -> m a) -> a -> MVector (PrimState m) b -> m a Source #
verticesToVertexList :: Vertices g v -> [Vertex g] Source #
verticesTraverse :: Applicative m => (Vertex g -> v -> m a) -> Vertices g v -> m (Vertices g a) Source #
This is currently inefficient. If an itraverse
gets added
to vector
, this can be made faster.
verticesTraverse_ :: Applicative m => (Vertex g -> v -> m a) -> Vertices g v -> m () Source #
This is currently inefficient. If an itraverse
gets added
to vector
, this can be made faster.
verticesToVector :: Vertices g v -> Vector v Source #
verticesRead :: Vertices g v -> Vertex g -> v Source #
verticesLength :: Vertices g v -> Int Source #