decaf-0.1.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Util.Graph

Documentation

empty :: Graph ni nd ed Source #

data Graph ni nd ed Source #

Constructors

Graph 

Fields

Instances

Instances details
Generic (Graph ni nd ed) Source # 
Instance details

Defined in Util.Graph

Associated Types

type Rep (Graph ni nd ed) :: Type -> Type #

Methods

from :: Graph ni nd ed -> Rep (Graph ni nd ed) x #

to :: Rep (Graph ni nd ed) x -> Graph ni nd ed #

(Show ni, Show nd, Show ed) => Show (Graph ni nd ed) Source # 
Instance details

Defined in Util.Graph

Methods

showsPrec :: Int -> Graph ni nd ed -> ShowS #

show :: Graph ni nd ed -> String #

showList :: [Graph ni nd ed] -> ShowS #

MonadState (Graph ni nd ed) (GraphBuilder ni nd ed) Source # 
Instance details

Defined in Util.Graph

Methods

get :: GraphBuilder ni nd ed (Graph ni nd ed) #

put :: Graph ni nd ed -> GraphBuilder ni nd ed () #

state :: (Graph ni nd ed -> (a, Graph ni nd ed)) -> GraphBuilder ni nd ed a #

type Rep (Graph ni nd ed) Source # 
Instance details

Defined in Util.Graph

type Rep (Graph ni nd ed) = D1 ('MetaData "Graph" "Util.Graph" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "Graph" 'PrefixI 'True) (S1 ('MetaSel ('Just "nodes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map ni nd)) :*: S1 ('MetaSel ('Just "edges") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (ni, ni) ed))))

outBound :: (Eq ni, Ord ni) => ni -> Graph ni nd ed -> [(ni, ni, ed)] Source #

inBound :: (Eq ni, Ord ni) => ni -> Graph ni nd ed -> [(ni, ni, ed)] Source #

lookupNode :: (Eq ni, Ord ni) => ni -> Graph ni nd ed -> Maybe nd Source #

nodeToList :: (Eq ni, Ord ni) => Graph ni nd ed -> [(ni, nd)] Source #

edgeToList :: (Eq ni, Ord ni) => Graph ni nd ed -> [(ni, ni, ed)] Source #

alterNode :: (Eq ni, Ord ni) => ni -> (Maybe nd -> Maybe nd) -> GraphBuilder ni nd ed () Source #

adjustNode :: (Eq ni, Ord ni) => ni -> (nd -> nd) -> GraphBuilder ni nd ed () Source #

union :: (Eq ni, Ord ni) => Graph ni nd ed -> Graph ni nd ed -> Graph ni nd ed Source #

newtype GraphBuilder ni nd ed a Source #

Constructors

GraphBuilder 

Fields

Instances

Instances details
Applicative (GraphBuilder ni nd ed) Source # 
Instance details

Defined in Util.Graph

Methods

pure :: a -> GraphBuilder ni nd ed a #

(<*>) :: GraphBuilder ni nd ed (a -> b) -> GraphBuilder ni nd ed a -> GraphBuilder ni nd ed b #

liftA2 :: (a -> b -> c) -> GraphBuilder ni nd ed a -> GraphBuilder ni nd ed b -> GraphBuilder ni nd ed c #

(*>) :: GraphBuilder ni nd ed a -> GraphBuilder ni nd ed b -> GraphBuilder ni nd ed b #

(<*) :: GraphBuilder ni nd ed a -> GraphBuilder ni nd ed b -> GraphBuilder ni nd ed a #

Functor (GraphBuilder ni nd ed) Source # 
Instance details

Defined in Util.Graph

Methods

fmap :: (a -> b) -> GraphBuilder ni nd ed a -> GraphBuilder ni nd ed b #

(<$) :: a -> GraphBuilder ni nd ed b -> GraphBuilder ni nd ed a #

Monad (GraphBuilder ni nd ed) Source # 
Instance details

Defined in Util.Graph

Methods

(>>=) :: GraphBuilder ni nd ed a -> (a -> GraphBuilder ni nd ed b) -> GraphBuilder ni nd ed b #

(>>) :: GraphBuilder ni nd ed a -> GraphBuilder ni nd ed b -> GraphBuilder ni nd ed b #

return :: a -> GraphBuilder ni nd ed a #

MonadState (Graph ni nd ed) (GraphBuilder ni nd ed) Source # 
Instance details

Defined in Util.Graph

Methods

get :: GraphBuilder ni nd ed (Graph ni nd ed) #

put :: Graph ni nd ed -> GraphBuilder ni nd ed () #

state :: (Graph ni nd ed -> (a, Graph ni nd ed)) -> GraphBuilder ni nd ed a #

addNode :: (Eq ni, Ord ni) => ni -> nd -> GraphBuilder ni nd ed () Source #

addEdge :: (Eq ni, Ord ni) => ni -> ni -> ed -> GraphBuilder ni nd ed () Source #

deleteNode :: (Eq ni, Ord ni) => ni -> GraphBuilder ni nd ed () Source #

deleteEdge :: (Eq ni, Ord ni) => ni -> ni -> GraphBuilder ni nd ed () Source #

update :: (Eq ni, Ord ni) => GraphBuilder ni nd ed a -> Graph ni nd ed -> Either Text (Graph ni nd ed) Source #

build :: (Eq ni, Ord ni) => GraphBuilder ni nd ed a -> Either Text (Graph ni nd ed) Source #

strictlyDominate :: (Eq ni, Ord ni) => ni -> Graph ni nd ed -> Set ni Source #

strictlyPostDominate :: (Eq ni, Ord ni) => ni -> Graph ni nd ed -> Set ni Source #

topologicalTraverse :: (Eq ni, Ord ni) => (ni -> nd -> a) -> Graph ni nd ed -> [a] Source #

topologicalTraverseM :: (Eq ni, Ord ni, Monad m) => (ni -> nd -> m a) -> Graph ni nd ed -> m [a] Source #