-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A simple monadic graph library -- -- A "not-very-Haskelly" API for calculating traversals of graphs that -- may be too large to fit into memory. The algorithms included are -- inspired by the visitor concept of the Boost Graph Library. -- -- Here is a very simple example of how we might execute a -- depth-first-search. In this case the visitor simply collects the edges -- and vertices in the order that the corresponding functions get called. -- After the necessary imports, -- --
-- import Data.Array -- import Data.Monoid -- import Data.Graph.AdjacencyList -- import Data.Graph.Algorithm -- import Data.Graph.Algorithm.DepthFirstSearch ---- -- create an adjacency list where the vertices are labeled with integers. -- --
-- graph :: Array Int [Int] -- graph = array (0, 3) [(0, [1,2]), (1, [3]), (2, [3]), (3, [])] ---- -- -- We need a data structure that instantiates Monoid to combine -- the results of our visitor functions. -- --
-- data Orderings = Orderings
-- { enterV :: [Int]
-- , enterE :: [(Int, Int)]
-- , gray :: [(Int, Int)]
-- , exitV :: [Int]
-- , black :: [(Int, Int)]
-- } deriving Show
--
-- instance Monoid Orderings where
-- mempty = Orderings [] [] [] [] []
-- mappend (Orderings a1 a2 a3 a4 a5)(Orderings b1 b2 b3 b4 b5) =
-- Orderings (a1 ++ b1) (a2 ++ b2) (a3 ++ b3) (a4 ++ b4) (a5 ++ b5)
--
--
-- The dfs function's first argument is of type GraphSearch
-- which is a visitor containing the functions to be run at various times
-- during the search. The second argument is the starting vertex for the
-- search.
--
--
-- orderings :: GraphSearch (AdjacencyList Int) Orderings
-- orderings = GraphSearch
-- (\v -> return $ mempty {enterV = [v]})
-- (\e -> return $ mempty {enterE = [e]})
-- (\e -> return $ mempty {gray = [e]})
-- (\v -> return $ mempty {exitV = [v]})
-- (\e -> return $ mempty {black = [e]})
--
--
-- Finally runAdjacencylist unwraps the function in the
-- Adjacencylist newtype and runs it on graph.
--
-- -- dfsTest :: Orderings -- dfsTest = runAdjacencyList (dfs orderings 0) graph ---- -- Running dfsTest in ghci will yield: -- --
-- Orderings {enterV = [0,2,3,1], enterE = [(0,2),(2,3),(0,1)], gray = [], exitV = [3,2,1,0], black = [(1,3)]}
--
@package graphs
@version 0.7.2
-- | Total transient monadic maps, used to track information about vertices
-- and edges in a graph
module Data.Graph.PropertyMap
data PropertyMap m k v
PropertyMap :: (k -> m v) -> (k -> v -> m (PropertyMap m k v)) -> PropertyMap m k v
[getP] :: PropertyMap m k v -> k -> m v
[putP] :: PropertyMap m k v -> k -> v -> m (PropertyMap m k v)
modifyP :: Monad m => PropertyMap m k v -> k -> (v -> v) -> m (PropertyMap m k v)
intPropertyMap :: Monad m => v -> PropertyMap m Int v
propertyMap :: (Monad m, Ord k) => v -> PropertyMap m k v
liftPropertyMap :: (MonadTrans t, Monad m, Monad (t m)) => PropertyMap m k v -> PropertyMap (t m) k v
module Data.Graph.Class
class (Monad g, Eq (Vertex g), Eq (Edge g)) => Graph g where {
type family Vertex g :: *;
type family Edge g :: *;
}
vertexMap :: Graph g => a -> g (VertexMap g a)
edgeMap :: Graph g => a -> g (EdgeMap g a)
type VertexMap g = PropertyMap g (Vertex g)
type EdgeMap g = PropertyMap g (Edge g)
liftVertexMap :: (MonadTrans t, Graph (t g), Graph g, Vertex (t g) ~ Vertex g) => a -> t g (VertexMap (t g) a)
liftEdgeMap :: (MonadTrans t, Graph (t g), Graph g, Edge (t g) ~ Edge g) => a -> t g (EdgeMap (t g) a)
instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.State.Strict.StateT s g)
instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.State.Lazy.StateT s g)
instance (Data.Graph.Class.Graph g, GHC.Base.Monoid m) => Data.Graph.Class.Graph (Control.Monad.Trans.Writer.Strict.WriterT m g)
instance (Data.Graph.Class.Graph g, GHC.Base.Monoid m) => Data.Graph.Class.Graph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.Reader.ReaderT m g)
instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.Identity.IdentityT g)
instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.Maybe.MaybeT g)
instance (Data.Graph.Class.Graph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.Graph (Control.Monad.Trans.Error.ErrorT e g)
instance (Data.Graph.Class.Graph g, GHC.Base.Monoid w) => Data.Graph.Class.Graph (Control.Monad.Trans.RWS.Lazy.RWST r w s g)
instance (Data.Graph.Class.Graph g, GHC.Base.Monoid w) => Data.Graph.Class.Graph (Control.Monad.Trans.RWS.Strict.RWST r w s g)
instance Data.Graph.Class.Graph Data.Functor.Identity.Identity
module Data.Graph.Class.VertexEnumerable
class Graph g => VertexEnumerableGraph g
-- | O(v)
vertices :: VertexEnumerableGraph g => g [Vertex g]
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.State.Strict.StateT s g)
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.State.Lazy.StateT s g)
instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Maybe.MaybeT g)
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Identity.IdentityT g)
instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Error.ErrorT e g)
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Reader.ReaderT m g)
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph Data.Functor.Identity.Identity
module Data.Graph.Class.EdgeEnumerable
class Graph g => EdgeEnumerableGraph g
-- | O(e)
edges :: EdgeEnumerableGraph g => g [Edge g]
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.State.Strict.StateT s g)
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.State.Lazy.StateT s g)
instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Maybe.MaybeT g)
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Identity.IdentityT g)
instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Error.ErrorT e g)
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Reader.ReaderT e g)
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph Data.Functor.Identity.Identity
module Data.Graph.Class.AdjacencyMatrix
class Graph g => AdjacencyMatrixGraph g
edge :: AdjacencyMatrixGraph g => Vertex g -> Vertex g -> g (Maybe (Edge g))
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.State.Strict.StateT s g)
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.State.Lazy.StateT s g)
instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Maybe.MaybeT g)
instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Error.ErrorT e g)
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Identity.IdentityT g)
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Reader.ReaderT e g)
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph Data.Functor.Identity.Identity
module Data.Graph.Class.AdjacencyList
-- | Minimal definition: source, target, and either
-- adjacentVertices with outEdges =
-- defaultOutEdges or outEdges
class Graph g => AdjacencyListGraph g
source :: AdjacencyListGraph g => Edge g -> g (Vertex g)
target :: AdjacencyListGraph g => Edge g -> g (Vertex g)
outEdges :: AdjacencyListGraph g => Vertex g -> g [Edge g]
outDegree :: AdjacencyListGraph g => Vertex g -> g Int
adjacentVertices :: AdjacencyListGraph g => Vertex g -> g [Vertex g]
defaultOutEdges :: AdjacencyListGraph g => Vertex g -> g [(Vertex g, Vertex g)]
instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.State.Strict.StateT s g)
instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.State.Lazy.StateT s g)
instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Reader.ReaderT e g)
instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Error.ErrorT e g)
instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Maybe.MaybeT g)
instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Identity.IdentityT g)
instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph Data.Functor.Identity.Identity
module Data.Graph.Class.Bidirectional
class AdjacencyListGraph g => BidirectionalGraph g
inEdges :: BidirectionalGraph g => Vertex g -> g [Edge g]
inDegree :: BidirectionalGraph g => Vertex g -> g Int
incidentEdges :: BidirectionalGraph g => Vertex g -> g [Edge g]
degree :: BidirectionalGraph g => Vertex g -> g Int
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.State.Strict.StateT s g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.State.Lazy.StateT s g)
instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Reader.ReaderT e g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Identity.IdentityT g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Maybe.MaybeT g)
instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Error.ErrorT e g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph Data.Functor.Identity.Identity
module Data.Graph.Dual
newtype Dual g a
Dual :: g a -> Dual g a
[runDual] :: Dual g a -> g a
instance Control.Monad.Trans.Class.MonadTrans Data.Graph.Dual.Dual
instance GHC.Base.Functor g => GHC.Base.Functor (Data.Graph.Dual.Dual g)
instance GHC.Base.Applicative g => GHC.Base.Applicative (Data.Graph.Dual.Dual g)
instance GHC.Base.Monad g => GHC.Base.Monad (Data.Graph.Dual.Dual g)
instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Data.Graph.Dual.Dual g)
instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Data.Graph.Dual.Dual g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Data.Graph.Dual.Dual g)
instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Data.Graph.Dual.Dual g)
instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Data.Graph.Dual.Dual g)
instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Data.Graph.Dual.Dual g)
-- | Functions and data structures common to graph search algorithms
module Data.Graph.Algorithm
-- | Graph search visitor
data GraphSearch g m
GraphSearch :: (Vertex g -> g m) -> (Edge g -> g m) -> (Edge g -> g m) -> (Vertex g -> g m) -> (Edge g -> g m) -> GraphSearch g m
-- | Called the first time a vertex is discovered
[enterVertex] :: GraphSearch g m -> Vertex g -> g m
-- | Called the first time an edge is discovered, before enterVertex
[enterEdge] :: GraphSearch g m -> Edge g -> g m
-- | Called when we encounter a back edge to a vertex we're still
-- processing
[grayTarget] :: GraphSearch g m -> Edge g -> g m
-- | Called once we have processed all descendants of a vertex
[exitVertex] :: GraphSearch g m -> Vertex g -> g m
-- | Called when we encounter a cross edge to a vertex we've already
-- finished
[blackTarget] :: GraphSearch g m -> Edge g -> g m
instance Data.Graph.Class.Graph g => GHC.Base.Functor (Data.Graph.Algorithm.GraphSearch g)
instance Data.Graph.Class.Graph g => GHC.Base.Applicative (Data.Graph.Algorithm.GraphSearch g)
instance Data.Graph.Class.Graph g => GHC.Base.Monad (Data.Graph.Algorithm.GraphSearch g)
instance (Data.Graph.Class.Graph g, GHC.Base.Semigroup m) => GHC.Base.Semigroup (Data.Graph.Algorithm.GraphSearch g m)
instance (Data.Graph.Class.Graph g, GHC.Base.Monoid m) => GHC.Base.Monoid (Data.Graph.Algorithm.GraphSearch g m)
-- | Depth-first search
module Data.Graph.Algorithm.DepthFirstSearch
dfs :: (AdjacencyListGraph g, Monoid m) => GraphSearch g m -> Vertex g -> g m
-- | Breadth-first search
module Data.Graph.Algorithm.BreadthFirstSearch
bfs :: (AdjacencyListGraph g, Monoid m) => GraphSearch g m -> Vertex g -> g m
module Data.Graph.AdjacencyMatrix
newtype AdjacencyMatrix arr i a
AdjacencyMatrix :: (arr (i, i) Bool -> a) -> AdjacencyMatrix arr i a
[runAdjacencyMatrix] :: AdjacencyMatrix arr i a -> arr (i, i) Bool -> a
class Graph g => AdjacencyMatrixGraph g
ask :: AdjacencyMatrix arr i (arr (i, i) Bool)
instance GHC.Base.Functor (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
instance GHC.Base.Applicative (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
instance GHC.Base.Monad (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
instance GHC.Classes.Ord i => Data.Graph.Class.Graph (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
instance (Data.Array.Base.IArray arr GHC.Types.Bool, GHC.Ix.Ix i) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
module Data.Graph.AdjacencyList
newtype AdjacencyList i a
AdjacencyList :: (Array i [i] -> a) -> AdjacencyList i a
[runAdjacencyList] :: AdjacencyList i a -> Array i [i] -> a
-- | Minimal definition: source, target, and either
-- adjacentVertices with outEdges =
-- defaultOutEdges or outEdges
class Graph g => AdjacencyListGraph g
ask :: AdjacencyList i (Array i [i])
instance GHC.Base.Functor (Data.Graph.AdjacencyList.AdjacencyList i)
instance GHC.Base.Applicative (Data.Graph.AdjacencyList.AdjacencyList i)
instance GHC.Base.Monad (Data.Graph.AdjacencyList.AdjacencyList i)
instance GHC.Classes.Ord i => Data.Graph.Class.Graph (Data.Graph.AdjacencyList.AdjacencyList i)
instance GHC.Ix.Ix i => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Data.Graph.AdjacencyList.AdjacencyList i)