Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Graph.Haggle.LabelAdapter
Synopsis
- data LabeledMGraph (g :: (Type -> Type) -> Type) nl el (m :: Type -> Type)
- data LabeledGraph g nl el
- newLabeledGraph :: (MGraph g, PrimMonad m, MonadRef m) => m (g m) -> m (LabeledMGraph g nl el m)
- newSizedLabeledGraph :: (MGraph g, PrimMonad m, MonadRef m) => (Int -> Int -> m (g m)) -> Int -> Int -> m (LabeledMGraph g nl el m)
- mapEdgeLabel :: LabeledGraph g nl el -> (el -> el') -> LabeledGraph g nl el'
- mapVertexLabel :: LabeledGraph g nl el -> (nl -> nl') -> LabeledGraph g nl' el
- fromLabeledEdgeList :: (Ord nl, MGraph g, MAddVertex g, MAddEdge g) => (forall s. ST s (g (ST s))) -> [(nl, nl, el)] -> (LabeledGraph (ImmutableGraph g) nl el, VertexMap nl)
Types
data LabeledMGraph (g :: (Type -> Type) -> Type) nl el (m :: Type -> Type) Source #
An adapter adding support for both vertex and edge labels for mutable graphs.
Instances
data LabeledGraph g nl el Source #
An adapter adding support for both vertex and edge labels for immutable graphs.
Instances
(NFData g, NFData nl, NFData el) => NFData (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Methods rnf :: LabeledGraph g nl el -> () # | |||||
Bidirectional g => Bidirectional (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Methods predecessors :: LabeledGraph g nl el -> Vertex -> [Vertex] Source # inEdges :: LabeledGraph g nl el -> Vertex -> [Edge] Source # | |||||
Bidirectional g => BidirectionalEdgeLabel (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Methods labeledInEdges :: LabeledGraph g nl el -> Vertex -> [(Edge, EdgeLabel (LabeledGraph g nl el))] Source # | |||||
Graph g => Graph (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Methods vertices :: LabeledGraph g nl el -> [Vertex] Source # edges :: LabeledGraph g nl el -> [Edge] Source # successors :: LabeledGraph g nl el -> Vertex -> [Vertex] Source # outEdges :: LabeledGraph g nl el -> Vertex -> [Edge] Source # maxVertexId :: LabeledGraph g nl el -> Int Source # isEmpty :: LabeledGraph g nl el -> Bool Source # edgesBetween :: LabeledGraph g nl el -> Vertex -> Vertex -> [Edge] Source # | |||||
Graph g => HasEdgeLabel (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Associated Types
Methods edgeLabel :: LabeledGraph g nl el -> Edge -> Maybe (EdgeLabel (LabeledGraph g nl el)) Source # labeledEdges :: LabeledGraph g nl el -> [(Edge, EdgeLabel (LabeledGraph g nl el))] Source # labeledOutEdges :: LabeledGraph g nl el -> Vertex -> [(Edge, EdgeLabel (LabeledGraph g nl el))] Source # | |||||
Graph g => HasVertexLabel (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Associated Types
Methods vertexLabel :: LabeledGraph g nl el -> Vertex -> Maybe (VertexLabel (LabeledGraph g nl el)) Source # labeledVertices :: LabeledGraph g nl el -> [(Vertex, VertexLabel (LabeledGraph g nl el))] Source # | |||||
Thawable g => Thawable (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter Associated Types
Methods thaw :: (PrimMonad m, MonadRef m) => LabeledGraph g nl el -> m (MutableGraph (LabeledGraph g nl el) m) Source # | |||||
type EdgeLabel (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter | |||||
type MutableGraph (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter | |||||
type VertexLabel (LabeledGraph g nl el) Source # | |||||
Defined in Data.Graph.Haggle.Internal.Adapter |
Mutable Graph API
newLabeledGraph :: (MGraph g, PrimMonad m, MonadRef m) => m (g m) -> m (LabeledMGraph g nl el m) Source #
newSizedLabeledGraph :: (MGraph g, PrimMonad m, MonadRef m) => (Int -> Int -> m (g m)) -> Int -> Int -> m (LabeledMGraph g nl el m) Source #
Immutable Graph API
mapEdgeLabel :: LabeledGraph g nl el -> (el -> el') -> LabeledGraph g nl el' Source #
mapVertexLabel :: LabeledGraph g nl el -> (nl -> nl') -> LabeledGraph g nl' el Source #
fromLabeledEdgeList :: (Ord nl, MGraph g, MAddVertex g, MAddEdge g) => (forall s. ST s (g (ST s))) -> [(nl, nl, el)] -> (LabeledGraph (ImmutableGraph g) nl el, VertexMap nl) Source #
Construct a graph from a labeled list of edges. The node endpoint values are used as vertex labels, and the last element of the triple is used as an edge label.