-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Fast, memory efficient and persistent graph implementation
--   
--   A small package providing a powerful and easy to use Haskell graph
--   implementation.
@package graph-core
@version 0.3.0.0

module Data.Core.Graph.NodeManager
data NodeManager k
type Node = Int
type NodeMap v = IntMap v
type NodeSet = IntSet
emptyNode :: Node
initNodeManager :: (Hashable k, Eq k) => NodeMap k -> NodeManager k
emptyNodeManager :: forall k. NodeManager k
getNodeMap :: (Hashable k, Eq k) => NodeManager k -> NodeMap k
getNodeHandle :: (Hashable k, Eq k, MonadState (NodeManager k) m) => k -> m Node
getExistingNodeHandle :: (Hashable k, Eq k) => k -> NodeManager k -> Maybe Node
lookupNode :: Node -> NodeManager k -> Maybe k
unsafeLookupNode :: Node -> NodeManager k -> k
removeNodeHandle :: (Hashable k, Eq k) => Node -> NodeManager k -> NodeManager k
getNewNodesSince :: Node -> NodeManager k -> NodeMap k
keys :: NodeManager k -> [k]
hasKey :: (Eq k, Hashable k) => k -> NodeManager k -> Bool
nodes :: NodeManager k -> [Node]
toList :: NodeManager k -> [(k, Node)]
isConsistent :: (Ord k) => NodeManager k -> Bool
instance GHC.Classes.Eq k => GHC.Classes.Eq (Data.Core.Graph.NodeManager.NodeManager k)
instance GHC.Show.Show k => GHC.Show.Show (Data.Core.Graph.NodeManager.NodeManager k)

module Data.Core.Graph.Persistence
data PersistentGraph k
persistGraph :: (Eq k, Hashable k) => NodeManager k -> Graph -> PersistentGraph k
loadGraph :: (Eq k, Hashable k) => PersistentGraph k -> (NodeManager k, Graph)
instance GHC.Classes.Eq k => GHC.Classes.Eq (Data.Core.Graph.Persistence.PersistentGraph k)
instance GHC.Show.Show k => GHC.Show.Show (Data.Core.Graph.Persistence.PersistentGraph k)

module Data.Core.Graph
data Graph
type Node = Int
type NodeSet = IntSet
data Edge
Edge :: !Node -> !Node -> Edge
[src] :: Edge -> !Node
[tgt] :: Edge -> !Node
empty :: Graph
fromEdges :: [Edge] -> Graph
fromAdj :: [(Node, [Node])] -> Graph
isConsistent :: Graph -> Bool
nodes :: Graph -> [Node]
edges :: Graph -> [Edge]
children :: Graph -> Node -> Vector Node
parents :: Graph -> Node -> Vector Node
hasEdge :: Node -> Node -> Graph -> Bool
edgeCount :: Graph -> Int
hull :: Graph -> Node -> NodeSet
rhull :: Graph -> Node -> NodeSet
hullFold :: Graph -> (b -> Node -> b) -> b -> Node -> b
hullFoldM :: Monad m => Graph -> (b -> Node -> m b) -> b -> Node -> m b
rhullFold :: Graph -> (b -> Node -> b) -> b -> Node -> b
addEdge :: Node -> Node -> Graph -> Graph
addEdges :: [Edge] -> Graph -> Graph
removeEdge :: Node -> Node -> Graph -> Graph
removeEdges :: [Edge] -> Graph -> Graph
addNode :: Node -> Graph -> Graph
removeNode :: Node -> Graph -> Graph
solitaireNodes :: Graph -> [Node]
edgesAdj :: AdjList -> [Edge]
