Safe Haskell | None |
---|---|
Language | Haskell2010 |
- newtype Vertex g = Vertex {}
- newtype Vertices g v = Vertices {
- getVertices :: Vector v
- data Edge g = Edge {
- edgeVertexA :: !Int
- edgeVertexB :: !Int
- data Graph g e v = Graph {
- graphVertices :: !(Vector v)
- graphOutboundNeighborVertices :: !(Vector (Vector Int))
- graphOutboundNeighborEdges :: !(Vector (Vector e))
- breadthFirstBy :: (Ord s, Monoid s) => (v -> v -> s -> e -> s) -> Vertex g -> Graph g e v -> Vertices g s
- lookupVertex :: Eq v => v -> Graph g e v -> Maybe (Vertex g)
- traverseNeighbors_ :: Applicative m => (e -> Vertex g -> v -> m a) -> Vertex g -> Graph g e v -> m ()
- 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
Documentation
Edge | |
|
The neighbor vertices and neighbor edges must have equal length.
Graph | |
|
breadthFirstBy :: (Ord s, Monoid s) => (v -> v -> s -> e -> s) -> Vertex g -> Graph g e v -> Vertices g s Source
This is a generalization of Dijkstra's algorithm.
traverseNeighbors_ :: Applicative m => (e -> Vertex g -> v -> m a) -> Vertex g -> Graph g e v -> m () Source