graphs-0.7: 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.AdjacencyList

Description

 

Synopsis

Documentation

newtype AdjacencyList i a #

Constructors

AdjacencyList 

Fields

Instances

Monad (AdjacencyList i) # 

Methods

(>>=) :: AdjacencyList i a -> (a -> AdjacencyList i b) -> AdjacencyList i b #

(>>) :: AdjacencyList i a -> AdjacencyList i b -> AdjacencyList i b #

return :: a -> AdjacencyList i a #

fail :: String -> AdjacencyList i a #

Functor (AdjacencyList i) # 

Methods

fmap :: (a -> b) -> AdjacencyList i a -> AdjacencyList i b #

(<$) :: a -> AdjacencyList i b -> AdjacencyList i a #

Applicative (AdjacencyList i) # 

Methods

pure :: a -> AdjacencyList i a #

(<*>) :: AdjacencyList i (a -> b) -> AdjacencyList i a -> AdjacencyList i b #

(*>) :: AdjacencyList i a -> AdjacencyList i b -> AdjacencyList i b #

(<*) :: AdjacencyList i a -> AdjacencyList i b -> AdjacencyList i a #

Ord i => Graph (AdjacencyList i) # 

Associated Types

type Vertex (AdjacencyList i :: * -> *) :: * #

type Edge (AdjacencyList i :: * -> *) :: * #

Ix i => AdjacencyListGraph (AdjacencyList i) # 
type Vertex (AdjacencyList i) # 
type Vertex (AdjacencyList i) = i
type Edge (AdjacencyList i) # 
type Edge (AdjacencyList i) = (i, i)

class Graph g => AdjacencyListGraph g #

Minimal definition: source, target, and either adjacentVertices with outEdges = defaultOutEdges or outEdges

Minimal complete definition

source, target, outEdges

Instances

AdjacencyListGraph Identity # 
AdjacencyListGraph g => AdjacencyListGraph (MaybeT g) # 
BidirectionalGraph g => AdjacencyListGraph (Dual g) # 

Methods

source :: Edge (Dual g) -> Dual g (Vertex (Dual g)) #

target :: Edge (Dual g) -> Dual g (Vertex (Dual g)) #

outEdges :: Vertex (Dual g) -> Dual g [Edge (Dual g)] #

outDegree :: Vertex (Dual g) -> Dual g Int #

adjacentVertices :: Vertex (Dual g) -> Dual g [Vertex (Dual g)] #

Ix i => AdjacencyListGraph (AdjacencyList i) # 
(AdjacencyListGraph g, Monoid m) => AdjacencyListGraph (WriterT m g) # 

Methods

source :: Edge (WriterT m g) -> WriterT m g (Vertex (WriterT m g)) #

target :: Edge (WriterT m g) -> WriterT m g (Vertex (WriterT m g)) #

outEdges :: Vertex (WriterT m g) -> WriterT m g [Edge (WriterT m g)] #

outDegree :: Vertex (WriterT m g) -> WriterT m g Int #

adjacentVertices :: Vertex (WriterT m g) -> WriterT m g [Vertex (WriterT m g)] #

(AdjacencyListGraph g, Monoid m) => AdjacencyListGraph (WriterT m g) # 

Methods

source :: Edge (WriterT m g) -> WriterT m g (Vertex (WriterT m g)) #

target :: Edge (WriterT m g) -> WriterT m g (Vertex (WriterT m g)) #

outEdges :: Vertex (WriterT m g) -> WriterT m g [Edge (WriterT m g)] #

outDegree :: Vertex (WriterT m g) -> WriterT m g Int #

adjacentVertices :: Vertex (WriterT m g) -> WriterT m g [Vertex (WriterT m g)] #

AdjacencyListGraph g => AdjacencyListGraph (StateT s g) # 

Methods

source :: Edge (StateT s g) -> StateT s g (Vertex (StateT s g)) #

target :: Edge (StateT s g) -> StateT s g (Vertex (StateT s g)) #

outEdges :: Vertex (StateT s g) -> StateT s g [Edge (StateT s g)] #

outDegree :: Vertex (StateT s g) -> StateT s g Int #

adjacentVertices :: Vertex (StateT s g) -> StateT s g [Vertex (StateT s g)] #

AdjacencyListGraph g => AdjacencyListGraph (StateT s g) # 

Methods

source :: Edge (StateT s g) -> StateT s g (Vertex (StateT s g)) #

target :: Edge (StateT s g) -> StateT s g (Vertex (StateT s g)) #

outEdges :: Vertex (StateT s g) -> StateT s g [Edge (StateT s g)] #

outDegree :: Vertex (StateT s g) -> StateT s g Int #

adjacentVertices :: Vertex (StateT s g) -> StateT s g [Vertex (StateT s g)] #

AdjacencyListGraph g => AdjacencyListGraph (IdentityT * g) # 
(AdjacencyListGraph g, Error e) => AdjacencyListGraph (ErrorT e g) # 

Methods

source :: Edge (ErrorT e g) -> ErrorT e g (Vertex (ErrorT e g)) #

target :: Edge (ErrorT e g) -> ErrorT e g (Vertex (ErrorT e g)) #

outEdges :: Vertex (ErrorT e g) -> ErrorT e g [Edge (ErrorT e g)] #

outDegree :: Vertex (ErrorT e g) -> ErrorT e g Int #

adjacentVertices :: Vertex (ErrorT e g) -> ErrorT e g [Vertex (ErrorT e g)] #

AdjacencyListGraph g => AdjacencyListGraph (ReaderT * e g) # 

Methods

source :: Edge (ReaderT * e g) -> ReaderT * e g (Vertex (ReaderT * e g)) #

target :: Edge (ReaderT * e g) -> ReaderT * e g (Vertex (ReaderT * e g)) #

outEdges :: Vertex (ReaderT * e g) -> ReaderT * e g [Edge (ReaderT * e g)] #

outDegree :: Vertex (ReaderT * e g) -> ReaderT * e g Int #

adjacentVertices :: Vertex (ReaderT * e g) -> ReaderT * e g [Vertex (ReaderT * e g)] #

(AdjacencyListGraph g, Monoid m) => AdjacencyListGraph (RWST r m s g) # 

Methods

source :: Edge (RWST r m s g) -> RWST r m s g (Vertex (RWST r m s g)) #

target :: Edge (RWST r m s g) -> RWST r m s g (Vertex (RWST r m s g)) #

outEdges :: Vertex (RWST r m s g) -> RWST r m s g [Edge (RWST r m s g)] #

outDegree :: Vertex (RWST r m s g) -> RWST r m s g Int #

adjacentVertices :: Vertex (RWST r m s g) -> RWST r m s g [Vertex (RWST r m s g)] #

(AdjacencyListGraph g, Monoid m) => AdjacencyListGraph (RWST r m s g) # 

Methods

source :: Edge (RWST r m s g) -> RWST r m s g (Vertex (RWST r m s g)) #

target :: Edge (RWST r m s g) -> RWST r m s g (Vertex (RWST r m s g)) #

outEdges :: Vertex (RWST r m s g) -> RWST r m s g [Edge (RWST r m s g)] #

outDegree :: Vertex (RWST r m s g) -> RWST r m s g Int #

adjacentVertices :: Vertex (RWST r m s g) -> RWST r m s g [Vertex (RWST r m s g)] #

ask :: AdjacencyList i (Array i [i]) #