Safe Haskell | None |
---|---|
Language | Haskell98 |
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
- newtype PureGraph nodeInfo arcInfo = PureGraph {
- nodeDataFM :: Map nodeInfo (NodeData nodeInfo arcInfo)
- data NodeData nodeInfo arcInfo = NodeData {}
- data ArcData nodeInfo arcInfo = ArcData {}
- emptyPureGraph :: Ord nodeInfo => PureGraph nodeInfo arcInfo
- addNode :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> [(arcInfo, nodeInfo)] -> PureGraph nodeInfo arcInfo
- deleteNode :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> PureGraph nodeInfo arcInfo
- mapArcInfo :: (arcInfo1 -> arcInfo2) -> PureGraph nodeInfo arcInfo1 -> PureGraph nodeInfo arcInfo2
- parentNodes :: NodeData nodeInfo arcInfo -> [nodeInfo]
- toAllNodes :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> [nodeInfo]
- toNodeParents :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> Maybe [nodeInfo]
- nodeExists :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> Bool
Documentation
newtype PureGraph nodeInfo arcInfo Source #
node given with their parent nodes. The parents should always come before their children in the list.
PureGraph | |
|
data NodeData nodeInfo arcInfo Source #
Instances
Show (PartialShow (NodeData nodeInfo arcInfo)) Source # | |
Defined in Graphs.PureGraph | |
(Eq arcInfo, Eq nodeInfo) => Eq (NodeData nodeInfo arcInfo) Source # | |
(Ord arcInfo, Ord nodeInfo) => Ord (NodeData nodeInfo arcInfo) Source # | |
Defined in Graphs.PureGraph compare :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> Ordering # (<) :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> Bool # (<=) :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> Bool # (>) :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> Bool # (>=) :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> Bool # max :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo # min :: NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo -> NodeData nodeInfo arcInfo # | |
(Show arcInfo, Show nodeInfo) => Show (NodeData nodeInfo arcInfo) Source # | |
data ArcData nodeInfo arcInfo Source #
Instances
(Eq arcInfo, Eq nodeInfo) => Eq (ArcData nodeInfo arcInfo) Source # | |
(Ord arcInfo, Ord nodeInfo) => Ord (ArcData nodeInfo arcInfo) Source # | |
Defined in Graphs.PureGraph compare :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> Ordering # (<) :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> Bool # (<=) :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> Bool # (>) :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> Bool # (>=) :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> Bool # max :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo # min :: ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo -> ArcData nodeInfo arcInfo # | |
(Show arcInfo, Show nodeInfo) => Show (ArcData nodeInfo arcInfo) Source # | |
emptyPureGraph :: Ord nodeInfo => PureGraph nodeInfo arcInfo Source #
addNode :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> [(arcInfo, nodeInfo)] -> PureGraph nodeInfo arcInfo Source #
add a node with given parent arcs from it.
deleteNode :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> nodeInfo -> PureGraph nodeInfo arcInfo Source #
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 arcInfo2 Source #
parentNodes :: NodeData nodeInfo arcInfo -> [nodeInfo] Source #
toAllNodes :: Ord nodeInfo => PureGraph nodeInfo arcInfo -> [nodeInfo] Source #