uni-graphs-2.2.0.0: Graphs

Graphs.PureGraph

Description

This module implements a simple "pure" graph interface, destined to be used for the complex graph operations required by VersionDag.

We instance Show for debugging purposes.

Synopsis

Documentation

newtype PureGraph nodeInfo arcInfo Source

node given with their parent nodes. The parents should always come before their children in the list.

Constructors

PureGraph 

Fields

nodeDataFM :: Map nodeInfo (NodeData nodeInfo arcInfo)
 

Instances

Show (PartialShow (PureGraph nodeInfo arcInfo)) 
(Show nodeInfo, Show arcInfo) => Show (PureGraph nodeInfo arcInfo) 

data NodeData nodeInfo arcInfo Source

Constructors

NodeData 

Fields

parents :: [ArcData nodeInfo arcInfo]
 

Instances

Show (PartialShow (NodeData nodeInfo arcInfo)) 
(Eq nodeInfo, Eq arcInfo) => Eq (NodeData nodeInfo arcInfo) 
(Ord nodeInfo, Ord arcInfo) => Ord (NodeData nodeInfo arcInfo) 
(Show nodeInfo, Show arcInfo) => Show (NodeData nodeInfo arcInfo) 

data ArcData nodeInfo arcInfo Source

Constructors

ArcData 

Fields

arcInfo :: arcInfo
 
target :: nodeInfo
 

Instances

(Eq nodeInfo, Eq arcInfo) => Eq (ArcData nodeInfo arcInfo) 
(Ord nodeInfo, Ord arcInfo) => Ord (ArcData nodeInfo arcInfo) 
(Show nodeInfo, Show arcInfo) => Show (ArcData nodeInfo arcInfo) 

emptyPureGraph :: Ord nodeInfo => PureGraph nodeInfo arcInfoSource

addNode :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> [(arcInfo, nodeInfo)] -> PureGraph nodeInfo arcInfoSource

add a node with given parent arcs from it.

deleteNode :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> PureGraph nodeInfo arcInfoSource

NB. The graph will end up ill-formed if you delete a node which has parent arcs pointing to it.

mapArcInfo :: (arcInfo1 -> arcInfo2) -> PureGraph nodeInfo arcInfo1 -> PureGraph nodeInfo arcInfo2Source

parentNodes :: NodeData nodeInfo arcInfo -> [nodeInfo]Source

toAllNodes :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> [nodeInfo]Source

toNodeParents :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> Maybe [nodeInfo]Source

nodeExists :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> BoolSource