The removeAncestors function in this module (actually an IO action) takes a graph G and a list of nodes N and computes N' = { n in N | there does not exist an m in N and a non-trivial path n -> m }. This is required for graph merging.
- removeAncestors :: Graph graph => graph nodeLabel nodeTypeLabel arcLabel arcTypeLabel -> [Node] -> IO [Node]
- removeAncestorsBy :: (Ord node, Monad m) => (node -> m [node]) -> [node] -> m [node]
- removeAncestorsByPure :: Ord node => (node -> [node]) -> [node] -> [node]
Documentation
removeAncestors :: Graph graph => graph nodeLabel nodeTypeLabel arcLabel arcTypeLabel -> [Node] -> IO [Node]Source
Takes a graph G and a list of nodes N and computes N' = { n in N | there does not exist an m in N and a non-trivial path n -> m }.
removeAncestorsBy :: (Ord node, Monad m) => (node -> m [node]) -> [node] -> m [node]Source
General removeAncestors function, which takes as argument the action computing a Node's successors.
removeAncestorsByPure :: Ord node => (node -> [node]) -> [node] -> [node]Source
Pure version of removeAncestorsBy
.