úÎ?¹=N"      !NoneA directed graph ,An edge from the first vertex to the second )Retrieve data associated with the vertex )Exhaustive list of vertices in the graph &Exhaustive list of edges in the graph  "#$%   "#$%None Construct a 1 where the vertex data double up as the indices. Unlike G, vertex data that is listed as edges that are not actually themselves 5 present in the input list are reported as an error.  Construct a Y that contains the given vertex data, linked up according to the supplied key extraction  function and edge list. Unlike S, indexes in the edge list that do not correspond to the index of some item in the & input list are reported as an error.  Construct a 5 directly from a list of vertices (and vertex data). If either end of an D does not correspond to a supplied vertex, an error will be raised.  Construct a _ that contains the given vertex data, linked up according to the supplied index and edge list. Unlike S, indexes in the edge list that do not correspond to the index of some item in the & input list are reported as an error.  Construct a _ that contains the given vertex data, linked up according to the supplied index and edge list. Like S, indexes in the edge list that do not correspond to the index of some item in the " input list are silently ignored. Morally, the inverse of \. The order of the elements in the output list is unspecified, as is the order of the edges  in each node'#s adjacency list. For this reason, toList . fromList+ is not necessarily the identity function. FFind the vertices we can reach from a vertex with the given indentity )Number of edges going out of the vertex. -It is worth sharing a partial application of  to the ! argument if you intend to query - for the outdegrees of a number of vertices. (Number of edges going in to the vertex. -It is worth sharing a partial application of  to the ! argument if you intend to query , for the indegrees of a number of vertices. TThe graph formed by flipping all the edges, so edges from i to j now go from j to i "Topological sort of of the graph ( -http://en.wikipedia.org/wiki/Topological_sort). If the graph is acyclic, m vertices will only appear in the list once all of those vertices with arrows to them have already appeared. Vertex i precedes j in the output whenever j is reachable from i but not vice versa. AList all of the vertices reachable from the given starting point IIs the second vertex reachable by following edges from the first vertex? -It is worth sharing a partial application of 4 to the first vertex if you are testing for several # vertices being reachable from it. sNumber the vertices in the graph by how far away they are from the given roots. The roots themselves have depth 0, q and every subsequent link we traverse adds 1 to the depth. If a vertex is not reachable it will have a depth of &. Strongly connected components ( 9http://en.wikipedia.org/wiki/Strongly_connected_component). gThe SCCs are listed in a *reverse topological order*. That is to say, any edges *to* a node in the SCC  originate either *from*: +1) Within the SCC itself (in the case of a  only) 3 2) Or from a node in a SCC later on in the list Vertex i strictly precedes j in the output whenever i is reachable from j but not vice versa.  Vertex i occurs in the same SCC as j whenever both i is reachable from j and j is reachable from i. !eThe graph formed by the strongly connected components of the input graph. Each node in the resulting V graph is indexed by the set of vertex indices from the input graph that it contains. '()*+ !,-.  !   !'()*+ !,-./      !"#$%&'()*+,-./0123456graph-wrapper-0.2.4.2Data.Graph.WrapperData.Graph.Wrapper.Internal Data.GraphgraphFromEdgesGraphGgraphindexGVertexArraygVertexVertexArrayEdgetraverseWithKey indexGVertex gVertexIndex gVertexVertexvertex indexGVertex'indexGVertex'_maybeverticesedgesSCC CyclicSCC AcyclicSCCfromListSimple fromListByfromVerticesEdgesfromListfromListLenienttoList successors outdegreeindegree transposetopologicalSortreachableVerticeshasPathdepthNumberingstronglyConnectedComponentssccGraph$fTraversableGraph$fFoldableGraph$fFunctorGraph $fShowGraphbase Data.MaybeNothingfst3snd3thd3 amapWithKeyM fromList'$fTraversableSCC $fFoldableSCC $fFunctorSCC