Safe Haskell | None |
---|---|
Language | Haskell2010 |
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, MonadReader TypeInfo m, HasState (Map Type (E Type)) 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, MonadReader TypeInfo m, HasState (Map Type (E Type)) 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.)