graphs-0.7.1: A simple monadic graph library

Copyright(C) 2011 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
Portabilitytype families
Safe HaskellSafe
LanguageHaskell98

Data.Graph.Algorithm

Description

Functions and data structures common to graph search algorithms

Synopsis

Documentation

data GraphSearch g m Source #

Graph search visitor

Constructors

GraphSearch 

Fields

  • enterVertex :: Vertex g -> g m

    Called the first time a vertex is discovered

  • enterEdge :: Edge g -> g m

    Called the first time an edge is discovered, before enterVertex

  • grayTarget :: Edge g -> g m

    Called when we encounter a back edge to a vertex we're still processing

  • exitVertex :: Vertex g -> g m

    Called once we have processed all descendants of a vertex

  • blackTarget :: Edge g -> g m

    Called when we encounter a cross edge to a vertex we've already finished

Instances

Graph g => Monad (GraphSearch g) Source # 

Methods

(>>=) :: GraphSearch g a -> (a -> GraphSearch g b) -> GraphSearch g b #

(>>) :: GraphSearch g a -> GraphSearch g b -> GraphSearch g b #

return :: a -> GraphSearch g a #

fail :: String -> GraphSearch g a #

Graph g => Functor (GraphSearch g) Source # 

Methods

fmap :: (a -> b) -> GraphSearch g a -> GraphSearch g b #

(<$) :: a -> GraphSearch g b -> GraphSearch g a #

Graph g => Applicative (GraphSearch g) Source # 

Methods

pure :: a -> GraphSearch g a #

(<*>) :: GraphSearch g (a -> b) -> GraphSearch g a -> GraphSearch g b #

liftA2 :: (a -> b -> c) -> GraphSearch g a -> GraphSearch g b -> GraphSearch g c #

(*>) :: GraphSearch g a -> GraphSearch g b -> GraphSearch g b #

(<*) :: GraphSearch g a -> GraphSearch g b -> GraphSearch g a #

(Graph g, Semigroup m) => Semigroup (GraphSearch g m) Source # 

Methods

(<>) :: GraphSearch g m -> GraphSearch g m -> GraphSearch g m #

sconcat :: NonEmpty (GraphSearch g m) -> GraphSearch g m #

stimes :: Integral b => b -> GraphSearch g m -> GraphSearch g m #

(Graph g, Monoid m) => Monoid (GraphSearch g m) Source # 

Methods

mempty :: GraphSearch g m #

mappend :: GraphSearch g m -> GraphSearch g m -> GraphSearch g m #

mconcat :: [GraphSearch g m] -> GraphSearch g m #