Safe Haskell | None |
---|---|
Language | Haskell2010 |
Operations involving the edges of the graph (before it is a graph.)
- type GraphEdges node key = Map key (node, Set key)
- typeGraphEdges :: forall node m. (DsMonad m, Functor m, Default node, MonadReader TypeInfo m) => m (GraphEdges node TGV)
- cut :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges node a -> GraphEdges node a
- cutM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges node a -> m (GraphEdges node a)
- cutEdges :: (Eq a, Ord a) => (a -> a -> Bool) -> GraphEdges node a -> GraphEdges node a
- cutEdgesM :: (Monad m, Eq a, Ord a) => (a -> a -> m Bool) -> GraphEdges node a -> m (GraphEdges node a)
- isolate :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges node a -> GraphEdges node a
- isolateM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges node a -> m (GraphEdges node a)
- link :: (Eq a, Ord a) => (a -> Maybe (Set a)) -> GraphEdges node a -> GraphEdges node a
- linkM :: (Eq a, Ord a, Monad m) => (a -> m (Maybe (Set a))) -> GraphEdges node a -> m (GraphEdges node a)
- dissolve :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges node a -> GraphEdges node a
- dissolveM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges node a -> m (GraphEdges node a)
- simpleEdges :: Monoid node => GraphEdges node TGV -> GraphEdges node TGVSimple
Documentation
type GraphEdges node key = Map key (node, Set key) Source
typeGraphEdges :: forall node m. (DsMonad m, Functor m, Default node, MonadReader TypeInfo m) => m (GraphEdges node 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 node a -> GraphEdges node a Source
Isolate and remove matching nodes
cutM :: (Functor m, Monad m, Eq a, Ord a) => (a -> m Bool) -> GraphEdges node a -> m (GraphEdges node a) Source
Monadic predicate version of cut
.
cutEdges :: (Eq a, Ord a) => (a -> a -> Bool) -> GraphEdges node a -> GraphEdges node a Source
cutEdgesM :: (Monad m, Eq a, Ord a) => (a -> a -> m Bool) -> GraphEdges node a -> m (GraphEdges node a) Source
isolate :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges node a -> GraphEdges node 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 node a -> m (GraphEdges node a) Source
Monadic predicate version of isolate
.
link :: (Eq a, Ord a) => (a -> Maybe (Set a)) -> GraphEdges node a -> GraphEdges node a Source
Replace the out set of selected nodes
linkM :: (Eq a, Ord a, Monad m) => (a -> m (Maybe (Set a))) -> GraphEdges node a -> m (GraphEdges node a) Source
dissolve :: (Eq a, Ord a) => (a -> Bool) -> GraphEdges node a -> GraphEdges node 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 node a -> m (GraphEdges node a) Source
Monadic predicate version of dissolve
.
simpleEdges :: Monoid node => GraphEdges node TGV -> GraphEdges node 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.)