| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Haskell.TH.TypeGraph.Edges
Description
Operations involving the edges of the graph (before it is a graph.)
- type GraphEdges key = Map key (Set key)
- typeGraphEdges :: forall m. (DsMonad m, Functor m, MonadReaders TypeInfo m, MonadStates ExpandMap m) => m (GraphEdges TGV')
- cut :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges a -> GraphEdges a
- cutM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges a -> m (GraphEdges a)
- cutEdges :: (Eq a, Ord a) => (a -> a -> Bool) -> GraphEdges a -> GraphEdges a
- cutEdgesM :: (Monad m, Eq a, Ord a) => (a -> a -> m Bool) -> GraphEdges a -> m (GraphEdges a)
- isolate :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges a -> GraphEdges a
- isolateM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges a -> m (GraphEdges a)
- link :: (Eq a, Ord a) => (a -> Maybe (Set a)) -> GraphEdges a -> GraphEdges a
- linkM :: (Eq a, Ord a, Monad m) => (a -> m (Maybe (Set a))) -> GraphEdges a -> m (GraphEdges a)
- dissolve :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges a -> GraphEdges a
- dissolveM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges a -> m (GraphEdges a)
- simpleEdges :: GraphEdges TGV' -> GraphEdges TGVSimple'
Documentation
type GraphEdges key = Map key (Set key) Source #
typeGraphEdges :: forall m. (DsMonad m, Functor m, MonadReaders TypeInfo m, MonadStates ExpandMap m) => m (GraphEdges TGV') Source #
Given the discovered set of types and maps of type synonyms and fields, build and return the GraphEdges relation on TypeGraphVertex. This is not a recursive function, it stops when it reaches the field types.
cut :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges a -> GraphEdges a Source #
Isolate and remove matching nodes
cutM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges a -> m (GraphEdges a) Source #
Monadic predicate version of cut.
cutEdges :: (Eq a, Ord a) => (a -> a -> Bool) -> GraphEdges a -> GraphEdges a Source #
cutEdgesM :: (Monad m, Eq a, Ord a) => (a -> a -> m Bool) -> GraphEdges a -> m (GraphEdges a) Source #
isolate :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges a -> GraphEdges a Source #
Remove all the in- and out-edges of matching nodes
isolateM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges a -> m (GraphEdges a) Source #
Monadic predicate version of isolate.
link :: (Eq a, Ord a) => (a -> Maybe (Set a)) -> GraphEdges a -> GraphEdges a Source #
Replace the out set of selected nodes
linkM :: (Eq a, Ord a, Monad m) => (a -> m (Maybe (Set a))) -> GraphEdges a -> m (GraphEdges a) Source #
dissolve :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges a -> GraphEdges a Source #
Remove matching nodes and extend each of their in-edges to each of their out-edges.
dissolveM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges a -> m (GraphEdges a) Source #
Monadic predicate version of dissolve.
simpleEdges :: GraphEdges TGV' -> GraphEdges TGVSimple' Source #
Simplify a graph by throwing away the field information in each node. This means the nodes only contain the fully expanded Type value (and any type synonyms.)