{- pureGraphMakeConsistent removes parent links to non-existent nodes from the graph. This deals with a situation which can sometimes occur when versions are being rewired. -} module Graphs.PureGraphMakeConsistent( pureGraphMakeConsistent, ) where import qualified Data.Map as Map import Graphs.PureGraph pureGraphMakeConsistent :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> PureGraph nodeInfo arcInfo pureGraphMakeConsistent (PureGraph {nodeDataFM = nodeDataFM0}) = let nodeDataFM1 = Map.mapWithKey (\ _ nodeData0 -> let parents0 = parents nodeData0 parents1 = filter (\ arcData -> Map.member (target arcData) nodeDataFM0) parents0 nodeData1 = NodeData {parents = parents1} in nodeData1 ) nodeDataFM0 in PureGraph {nodeDataFM = nodeDataFM1}