packages feed

fgl 5.5.2.3 → 5.5.3.0

raw patch · 12 files changed

+262/−33 lines, 12 filesdep ~QuickCheckPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: QuickCheck

API changes (from Hackage documentation)

- Data.Graph.Inductive.Graph: instance (Graph gr, Ord a, Ord b) => Eq (OrdGr gr a b)
- Data.Graph.Inductive.Graph: instance (Graph gr, Ord a, Ord b) => Ord (OrdGr gr a b)
- Data.Graph.Inductive.Graph: instance Eq a => Eq (LPath a)
- Data.Graph.Inductive.Graph: instance Eq b => Eq (GroupEdges b)
- Data.Graph.Inductive.Graph: instance Ord a => Ord (LPath a)
- Data.Graph.Inductive.Graph: instance Read (gr a b) => Read (OrdGr gr a b)
- Data.Graph.Inductive.Graph: instance Read b => Read (GroupEdges b)
- Data.Graph.Inductive.Graph: instance Show (gr a b) => Show (OrdGr gr a b)
- Data.Graph.Inductive.Graph: instance Show a => Show (LPath a)
- Data.Graph.Inductive.Graph: instance Show b => Show (GroupEdges b)
- Data.Graph.Inductive.Graph: unLPath :: LPath a -> [LNode a]
- Data.Graph.Inductive.Graph: unOrdGr :: OrdGr gr a b -> gr a b
- Data.Graph.Inductive.Internal.Heap: instance (Eq a, Eq b) => Eq (Heap a b)
- Data.Graph.Inductive.Internal.Heap: instance (NFData a, NFData b) => NFData (Heap a b)
- Data.Graph.Inductive.Internal.Heap: instance (Read a, Read b) => Read (Heap a b)
- Data.Graph.Inductive.Internal.Heap: instance (Show a, Show b) => Show (Heap a b)
- Data.Graph.Inductive.Monad.IOArray: instance (Show a, Show b) => Show (IO (SGr a b))
- Data.Graph.Inductive.Monad.IOArray: instance (Show a, Show b) => Show (SGr a b)
- Data.Graph.Inductive.Monad.IOArray: instance GraphM IO SGr
- Data.Graph.Inductive.NodeMap: instance (Ord a, Read a) => Read (NodeMap a)
- Data.Graph.Inductive.NodeMap: instance Eq a => Eq (NodeMap a)
- Data.Graph.Inductive.NodeMap: instance NFData a => NFData (NodeMap a)
- Data.Graph.Inductive.NodeMap: instance Show a => Show (NodeMap a)
- Data.Graph.Inductive.PatriciaTree: instance (Eq a, Ord b) => Eq (Gr a b)
- Data.Graph.Inductive.PatriciaTree: instance (NFData a, NFData b) => NFData (Gr a b)
- Data.Graph.Inductive.PatriciaTree: instance (Read a, Read b) => Read (Gr a b)
- Data.Graph.Inductive.PatriciaTree: instance (Show a, Show b) => Show (Gr a b)
- Data.Graph.Inductive.PatriciaTree: instance Constructor C1_0Gr
- Data.Graph.Inductive.PatriciaTree: instance Datatype D1Gr
- Data.Graph.Inductive.PatriciaTree: instance DynGraph Gr
- Data.Graph.Inductive.PatriciaTree: instance Generic (Gr a b)
- Data.Graph.Inductive.PatriciaTree: instance Graph Gr
- Data.Graph.Inductive.Query.ArtPoint: instance Eq a => Eq (DFSTree a)
- Data.Graph.Inductive.Query.ArtPoint: instance Eq a => Eq (LOWTree a)
- Data.Graph.Inductive.Query.ArtPoint: instance Read a => Read (DFSTree a)
- Data.Graph.Inductive.Query.ArtPoint: instance Read a => Read (LOWTree a)
- Data.Graph.Inductive.Query.ArtPoint: instance Show a => Show (DFSTree a)
- Data.Graph.Inductive.Query.ArtPoint: instance Show a => Show (LOWTree a)
- Data.Graph.Inductive.Query.MaxFlow2: instance Eq Direction
- Data.Graph.Inductive.Query.MaxFlow2: instance Ord Direction
- Data.Graph.Inductive.Query.MaxFlow2: instance Read Direction
- Data.Graph.Inductive.Query.MaxFlow2: instance Show Direction
- Data.Graph.Inductive.Query.Monad: instance Monad m => Applicative (GT m g)
- Data.Graph.Inductive.Query.Monad: instance Monad m => Functor (GT m g)
- Data.Graph.Inductive.Query.Monad: instance Monad m => Monad (GT m g)
- Data.Graph.Inductive.Tree: instance (Eq a, Ord b) => Eq (Gr a b)
- Data.Graph.Inductive.Tree: instance (NFData a, NFData b) => NFData (Gr a b)
- Data.Graph.Inductive.Tree: instance (Read a, Read b) => Read (Gr a b)
- Data.Graph.Inductive.Tree: instance (Show a, Show b) => Show (Gr a b)
- Data.Graph.Inductive.Tree: instance Constructor C1_0Gr
- Data.Graph.Inductive.Tree: instance Datatype D1Gr
- Data.Graph.Inductive.Tree: instance DynGraph Gr
- Data.Graph.Inductive.Tree: instance Generic (Gr a b)
- Data.Graph.Inductive.Tree: instance Graph Gr
+ Data.Graph.Inductive.Graph: [unLPath] :: LPath a -> [LNode a]
+ Data.Graph.Inductive.Graph: [unOrdGr] :: OrdGr gr a b -> gr a b
+ Data.Graph.Inductive.Graph: instance (Data.Graph.Inductive.Graph.Graph gr, GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Eq (Data.Graph.Inductive.Graph.OrdGr gr a b)
+ Data.Graph.Inductive.Graph: instance (Data.Graph.Inductive.Graph.Graph gr, GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Data.Graph.Inductive.Graph.OrdGr gr a b)
+ Data.Graph.Inductive.Graph: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Graph.Inductive.Graph.LPath a)
+ Data.Graph.Inductive.Graph: instance GHC.Classes.Eq b => GHC.Classes.Eq (Data.Graph.Inductive.Graph.GroupEdges b)
+ Data.Graph.Inductive.Graph: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Graph.Inductive.Graph.LPath a)
+ Data.Graph.Inductive.Graph: instance GHC.Read.Read (gr a b) => GHC.Read.Read (Data.Graph.Inductive.Graph.OrdGr gr a b)
+ Data.Graph.Inductive.Graph: instance GHC.Read.Read b => GHC.Read.Read (Data.Graph.Inductive.Graph.GroupEdges b)
+ Data.Graph.Inductive.Graph: instance GHC.Show.Show (gr a b) => GHC.Show.Show (Data.Graph.Inductive.Graph.OrdGr gr a b)
+ Data.Graph.Inductive.Graph: instance GHC.Show.Show a => GHC.Show.Show (Data.Graph.Inductive.Graph.LPath a)
+ Data.Graph.Inductive.Graph: instance GHC.Show.Show b => GHC.Show.Show (Data.Graph.Inductive.Graph.GroupEdges b)
+ Data.Graph.Inductive.Graph: order :: (Graph gr) => gr a b -> Int
+ Data.Graph.Inductive.Graph: size :: (Graph gr) => gr a b -> Int
+ Data.Graph.Inductive.Internal.Heap: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (Data.Graph.Inductive.Internal.Heap.Heap a b)
+ Data.Graph.Inductive.Internal.Heap: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Graph.Inductive.Internal.Heap.Heap a b)
+ Data.Graph.Inductive.Internal.Heap: instance (GHC.Read.Read b, GHC.Read.Read a) => GHC.Read.Read (Data.Graph.Inductive.Internal.Heap.Heap a b)
+ Data.Graph.Inductive.Internal.Heap: instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (Data.Graph.Inductive.Internal.Heap.Heap a b)
+ Data.Graph.Inductive.Monad.IOArray: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Graph.Inductive.Monad.IOArray.SGr a b)
+ Data.Graph.Inductive.Monad.IOArray: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (GHC.Types.IO (Data.Graph.Inductive.Monad.IOArray.SGr a b))
+ Data.Graph.Inductive.Monad.IOArray: instance Data.Graph.Inductive.Monad.GraphM GHC.Types.IO Data.Graph.Inductive.Monad.IOArray.SGr
+ Data.Graph.Inductive.Monad.STArray: SGr :: (GraphRep s a b) -> SGr s a b
+ Data.Graph.Inductive.Monad.STArray: defaultGraphSize :: Int
+ Data.Graph.Inductive.Monad.STArray: emptyN :: Int -> ST s (SGr s a b)
+ Data.Graph.Inductive.Monad.STArray: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Graph.Inductive.Monad.STArray.SGr GHC.Prim.RealWorld a b)
+ Data.Graph.Inductive.Monad.STArray: instance Data.Graph.Inductive.Monad.GraphM (GHC.ST.ST s) (Data.Graph.Inductive.Monad.STArray.SGr s)
+ Data.Graph.Inductive.Monad.STArray: newtype SGr s a b
+ Data.Graph.Inductive.Monad.STArray: removeDel :: STArray s Node Bool -> Adj b -> ST s (Adj b)
+ Data.Graph.Inductive.Monad.STArray: type Context' a b = Maybe (Adj b, a, Adj b)
+ Data.Graph.Inductive.Monad.STArray: type GraphRep s a b = (Int, Array Node (Context' a b), STArray s Node Bool)
+ Data.Graph.Inductive.Monad.STArray: type USGr s = SGr s () ()
+ Data.Graph.Inductive.NodeMap: instance (GHC.Read.Read a, GHC.Classes.Ord a) => GHC.Read.Read (Data.Graph.Inductive.NodeMap.NodeMap a)
+ Data.Graph.Inductive.NodeMap: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.Graph.Inductive.NodeMap.NodeMap a)
+ Data.Graph.Inductive.NodeMap: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Graph.Inductive.NodeMap.NodeMap a)
+ Data.Graph.Inductive.NodeMap: instance GHC.Show.Show a => GHC.Show.Show (Data.Graph.Inductive.NodeMap.NodeMap a)
+ Data.Graph.Inductive.PatriciaTree: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (Data.Graph.Inductive.PatriciaTree.Gr a b)
+ Data.Graph.Inductive.PatriciaTree: instance (GHC.Classes.Eq a, GHC.Classes.Ord b) => GHC.Classes.Eq (Data.Graph.Inductive.PatriciaTree.Gr a b)
+ Data.Graph.Inductive.PatriciaTree: instance (GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (Data.Graph.Inductive.PatriciaTree.Gr a b)
+ Data.Graph.Inductive.PatriciaTree: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Graph.Inductive.PatriciaTree.Gr a b)
+ Data.Graph.Inductive.PatriciaTree: instance Data.Bifunctor.Bifunctor Data.Graph.Inductive.PatriciaTree.Gr
+ Data.Graph.Inductive.PatriciaTree: instance Data.Graph.Inductive.Graph.DynGraph Data.Graph.Inductive.PatriciaTree.Gr
+ Data.Graph.Inductive.PatriciaTree: instance Data.Graph.Inductive.Graph.Graph Data.Graph.Inductive.PatriciaTree.Gr
+ Data.Graph.Inductive.PatriciaTree: instance GHC.Generics.Generic (Data.Graph.Inductive.PatriciaTree.Gr a b)
+ Data.Graph.Inductive.Query.ArtPoint: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Graph.Inductive.Query.ArtPoint.DFSTree a)
+ Data.Graph.Inductive.Query.ArtPoint: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Graph.Inductive.Query.ArtPoint.LOWTree a)
+ Data.Graph.Inductive.Query.ArtPoint: instance GHC.Read.Read a => GHC.Read.Read (Data.Graph.Inductive.Query.ArtPoint.DFSTree a)
+ Data.Graph.Inductive.Query.ArtPoint: instance GHC.Read.Read a => GHC.Read.Read (Data.Graph.Inductive.Query.ArtPoint.LOWTree a)
+ Data.Graph.Inductive.Query.ArtPoint: instance GHC.Show.Show a => GHC.Show.Show (Data.Graph.Inductive.Query.ArtPoint.DFSTree a)
+ Data.Graph.Inductive.Query.ArtPoint: instance GHC.Show.Show a => GHC.Show.Show (Data.Graph.Inductive.Query.ArtPoint.LOWTree a)
+ Data.Graph.Inductive.Query.MaxFlow2: instance GHC.Classes.Eq Data.Graph.Inductive.Query.MaxFlow2.Direction
+ Data.Graph.Inductive.Query.MaxFlow2: instance GHC.Classes.Ord Data.Graph.Inductive.Query.MaxFlow2.Direction
+ Data.Graph.Inductive.Query.MaxFlow2: instance GHC.Read.Read Data.Graph.Inductive.Query.MaxFlow2.Direction
+ Data.Graph.Inductive.Query.MaxFlow2: instance GHC.Show.Show Data.Graph.Inductive.Query.MaxFlow2.Direction
+ Data.Graph.Inductive.Query.Monad: infixr 8 ><
+ Data.Graph.Inductive.Query.Monad: instance GHC.Base.Monad m => GHC.Base.Applicative (Data.Graph.Inductive.Query.Monad.GT m g)
+ Data.Graph.Inductive.Query.Monad: instance GHC.Base.Monad m => GHC.Base.Functor (Data.Graph.Inductive.Query.Monad.GT m g)
+ Data.Graph.Inductive.Query.Monad: instance GHC.Base.Monad m => GHC.Base.Monad (Data.Graph.Inductive.Query.Monad.GT m g)
+ Data.Graph.Inductive.Query.TransClos: rc :: (DynGraph gr) => gr a b -> gr a ()
+ Data.Graph.Inductive.Query.TransClos: tc :: (DynGraph gr) => gr a b -> gr a ()
+ Data.Graph.Inductive.Tree: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (Data.Graph.Inductive.Tree.Gr a b)
+ Data.Graph.Inductive.Tree: instance (GHC.Classes.Eq a, GHC.Classes.Ord b) => GHC.Classes.Eq (Data.Graph.Inductive.Tree.Gr a b)
+ Data.Graph.Inductive.Tree: instance (GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (Data.Graph.Inductive.Tree.Gr a b)
+ Data.Graph.Inductive.Tree: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Graph.Inductive.Tree.Gr a b)
+ Data.Graph.Inductive.Tree: instance Data.Bifunctor.Bifunctor Data.Graph.Inductive.Tree.Gr
+ Data.Graph.Inductive.Tree: instance Data.Graph.Inductive.Graph.DynGraph Data.Graph.Inductive.Tree.Gr
+ Data.Graph.Inductive.Tree: instance Data.Graph.Inductive.Graph.Graph Data.Graph.Inductive.Tree.Gr
+ Data.Graph.Inductive.Tree: instance GHC.Generics.Generic (Data.Graph.Inductive.Tree.Gr a b)
- Data.Graph.Inductive.Basic: efilter :: DynGraph gr => (LEdge b -> Bool) -> gr a b -> gr a b
+ Data.Graph.Inductive.Basic: efilter :: (DynGraph gr) => (LEdge b -> Bool) -> gr a b -> gr a b
- Data.Graph.Inductive.Basic: elfilter :: DynGraph gr => (b -> Bool) -> gr a b -> gr a b
+ Data.Graph.Inductive.Basic: elfilter :: (DynGraph gr) => (b -> Bool) -> gr a b -> gr a b
- Data.Graph.Inductive.Basic: gfold :: Graph gr => (Context a b -> [Node]) -> (Context a b -> c -> d) -> (Maybe d -> c -> c, c) -> [Node] -> gr a b -> c
+ Data.Graph.Inductive.Basic: gfold :: (Graph gr) => (Context a b -> [Node]) -> (Context a b -> c -> d) -> (Maybe d -> c -> c, c) -> [Node] -> gr a b -> c
- Data.Graph.Inductive.Basic: grev :: DynGraph gr => gr a b -> gr a b
+ Data.Graph.Inductive.Basic: grev :: (DynGraph gr) => gr a b -> gr a b
- Data.Graph.Inductive.Basic: gsel :: Graph gr => (Context a b -> Bool) -> gr a b -> [Context a b]
+ Data.Graph.Inductive.Basic: gsel :: (Graph gr) => (Context a b -> Bool) -> gr a b -> [Context a b]
- Data.Graph.Inductive.Basic: hasLoop :: Graph gr => gr a b -> Bool
+ Data.Graph.Inductive.Basic: hasLoop :: (Graph gr) => gr a b -> Bool
- Data.Graph.Inductive.Basic: isSimple :: Graph gr => gr a b -> Bool
+ Data.Graph.Inductive.Basic: isSimple :: (Graph gr) => gr a b -> Bool
- Data.Graph.Inductive.Basic: unlab :: DynGraph gr => gr a b -> gr () ()
+ Data.Graph.Inductive.Basic: unlab :: (DynGraph gr) => gr a b -> gr () ()
- Data.Graph.Inductive.Example: genLNodes :: Enum a => a -> Int -> [LNode a]
+ Data.Graph.Inductive.Example: genLNodes :: (Enum a) => a -> Int -> [LNode a]
- Data.Graph.Inductive.Example: star :: Graph gr => Int -> gr () ()
+ Data.Graph.Inductive.Example: star :: (Graph gr) => Int -> gr () ()
- Data.Graph.Inductive.Example: starM :: GraphM m gr => Int -> m (gr () ())
+ Data.Graph.Inductive.Example: starM :: (GraphM m gr) => Int -> m (gr () ())
- Data.Graph.Inductive.Example: ucycle :: Graph gr => Int -> gr () ()
+ Data.Graph.Inductive.Example: ucycle :: (Graph gr) => Int -> gr () ()
- Data.Graph.Inductive.Example: ucycleM :: GraphM m gr => Int -> m (gr () ())
+ Data.Graph.Inductive.Example: ucycleM :: (GraphM m gr) => Int -> m (gr () ())
- Data.Graph.Inductive.Graph: buildGr :: DynGraph gr => [Context a b] -> gr a b
+ Data.Graph.Inductive.Graph: buildGr :: (DynGraph gr) => [Context a b] -> gr a b
- Data.Graph.Inductive.Graph: class Graph gr => DynGraph gr
+ Data.Graph.Inductive.Graph: class (Graph gr) => DynGraph gr
- Data.Graph.Inductive.Graph: context :: Graph gr => gr a b -> Node -> Context a b
+ Data.Graph.Inductive.Graph: context :: (Graph gr) => gr a b -> Node -> Context a b
- Data.Graph.Inductive.Graph: deg :: Graph gr => gr a b -> Node -> Int
+ Data.Graph.Inductive.Graph: deg :: (Graph gr) => gr a b -> Node -> Int
- Data.Graph.Inductive.Graph: delEdge :: DynGraph gr => Edge -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: delEdge :: (DynGraph gr) => Edge -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: delEdges :: DynGraph gr => [Edge] -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: delEdges :: (DynGraph gr) => [Edge] -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: delNode :: Graph gr => Node -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: delNode :: (Graph gr) => Node -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: delNodes :: Graph gr => [Node] -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: delNodes :: (Graph gr) => [Node] -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: edges :: Graph gr => gr a b -> [Edge]
+ Data.Graph.Inductive.Graph: edges :: (Graph gr) => gr a b -> [Edge]
- Data.Graph.Inductive.Graph: emap :: DynGraph gr => (b -> c) -> gr a b -> gr a c
+ Data.Graph.Inductive.Graph: emap :: (DynGraph gr) => (b -> c) -> gr a b -> gr a c
- Data.Graph.Inductive.Graph: gelem :: Graph gr => Node -> gr a b -> Bool
+ Data.Graph.Inductive.Graph: gelem :: (Graph gr) => Node -> gr a b -> Bool
- Data.Graph.Inductive.Graph: gmap :: DynGraph gr => (Context a b -> Context c d) -> gr a b -> gr c d
+ Data.Graph.Inductive.Graph: gmap :: (DynGraph gr) => (Context a b -> Context c d) -> gr a b -> gr c d
- Data.Graph.Inductive.Graph: indeg :: Graph gr => gr a b -> Node -> Int
+ Data.Graph.Inductive.Graph: indeg :: (Graph gr) => gr a b -> Node -> Int
- Data.Graph.Inductive.Graph: inn :: Graph gr => gr a b -> Node -> [LEdge b]
+ Data.Graph.Inductive.Graph: inn :: (Graph gr) => gr a b -> Node -> [LEdge b]
- Data.Graph.Inductive.Graph: insEdge :: DynGraph gr => LEdge b -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: insEdge :: (DynGraph gr) => LEdge b -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: insEdges :: DynGraph gr => [LEdge b] -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: insEdges :: (DynGraph gr) => [LEdge b] -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: insNode :: DynGraph gr => LNode a -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: insNode :: (DynGraph gr) => LNode a -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: insNodes :: DynGraph gr => [LNode a] -> gr a b -> gr a b
+ Data.Graph.Inductive.Graph: insNodes :: (DynGraph gr) => [LNode a] -> gr a b -> gr a b
- Data.Graph.Inductive.Graph: lab :: Graph gr => gr a b -> Node -> Maybe a
+ Data.Graph.Inductive.Graph: lab :: (Graph gr) => gr a b -> Node -> Maybe a
- Data.Graph.Inductive.Graph: lneighbors :: Graph gr => gr a b -> Node -> Adj b
+ Data.Graph.Inductive.Graph: lneighbors :: (Graph gr) => gr a b -> Node -> Adj b
- Data.Graph.Inductive.Graph: lpre :: Graph gr => gr a b -> Node -> [(Node, b)]
+ Data.Graph.Inductive.Graph: lpre :: (Graph gr) => gr a b -> Node -> [(Node, b)]
- Data.Graph.Inductive.Graph: lsuc :: Graph gr => gr a b -> Node -> [(Node, b)]
+ Data.Graph.Inductive.Graph: lsuc :: (Graph gr) => gr a b -> Node -> [(Node, b)]
- Data.Graph.Inductive.Graph: mkUGraph :: Graph gr => [Node] -> [Edge] -> gr () ()
+ Data.Graph.Inductive.Graph: mkUGraph :: (Graph gr) => [Node] -> [Edge] -> gr () ()
- Data.Graph.Inductive.Graph: neighbors :: Graph gr => gr a b -> Node -> [Node]
+ Data.Graph.Inductive.Graph: neighbors :: (Graph gr) => gr a b -> Node -> [Node]
- Data.Graph.Inductive.Graph: nemap :: DynGraph gr => (a -> c) -> (b -> d) -> gr a b -> gr c d
+ Data.Graph.Inductive.Graph: nemap :: (DynGraph gr) => (a -> c) -> (b -> d) -> gr a b -> gr c d
- Data.Graph.Inductive.Graph: newNodes :: Graph gr => Int -> gr a b -> [Node]
+ Data.Graph.Inductive.Graph: newNodes :: (Graph gr) => Int -> gr a b -> [Node]
- Data.Graph.Inductive.Graph: nmap :: DynGraph gr => (a -> c) -> gr a b -> gr c b
+ Data.Graph.Inductive.Graph: nmap :: (DynGraph gr) => (a -> c) -> gr a b -> gr c b
- Data.Graph.Inductive.Graph: nodes :: Graph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Graph: nodes :: (Graph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Graph: out :: Graph gr => gr a b -> Node -> [LEdge b]
+ Data.Graph.Inductive.Graph: out :: (Graph gr) => gr a b -> Node -> [LEdge b]
- Data.Graph.Inductive.Graph: outdeg :: Graph gr => gr a b -> Node -> Int
+ Data.Graph.Inductive.Graph: outdeg :: (Graph gr) => gr a b -> Node -> Int
- Data.Graph.Inductive.Graph: pre :: Graph gr => gr a b -> Node -> [Node]
+ Data.Graph.Inductive.Graph: pre :: (Graph gr) => gr a b -> Node -> [Node]
- Data.Graph.Inductive.Graph: suc :: Graph gr => gr a b -> Node -> [Node]
+ Data.Graph.Inductive.Graph: suc :: (Graph gr) => gr a b -> Node -> [Node]
- Data.Graph.Inductive.Graph: ufold :: Graph gr => (Context a b -> c -> c) -> c -> gr a b -> c
+ Data.Graph.Inductive.Graph: ufold :: (Graph gr) => (Context a b -> c -> c) -> c -> gr a b -> c
- Data.Graph.Inductive.Internal.Heap: build :: Ord a => [(a, b)] -> Heap a b
+ Data.Graph.Inductive.Internal.Heap: build :: (Ord a) => [(a, b)] -> Heap a b
- Data.Graph.Inductive.Internal.Heap: deleteMin :: Ord a => Heap a b -> Heap a b
+ Data.Graph.Inductive.Internal.Heap: deleteMin :: (Ord a) => Heap a b -> Heap a b
- Data.Graph.Inductive.Internal.Heap: heapsort :: Ord a => [a] -> [a]
+ Data.Graph.Inductive.Internal.Heap: heapsort :: (Ord a) => [a] -> [a]
- Data.Graph.Inductive.Internal.Heap: insert :: Ord a => (a, b) -> Heap a b -> Heap a b
+ Data.Graph.Inductive.Internal.Heap: insert :: (Ord a) => (a, b) -> Heap a b -> Heap a b
- Data.Graph.Inductive.Internal.Heap: merge :: Ord a => Heap a b -> Heap a b -> Heap a b
+ Data.Graph.Inductive.Internal.Heap: merge :: (Ord a) => Heap a b -> Heap a b -> Heap a b
- Data.Graph.Inductive.Internal.Heap: mergeAll :: Ord a => [Heap a b] -> Heap a b
+ Data.Graph.Inductive.Internal.Heap: mergeAll :: (Ord a) => [Heap a b] -> Heap a b
- Data.Graph.Inductive.Internal.Heap: splitMin :: Ord a => Heap a b -> (a, b, Heap a b)
+ Data.Graph.Inductive.Internal.Heap: splitMin :: (Ord a) => Heap a b -> (a, b, Heap a b)
- Data.Graph.Inductive.Internal.Heap: toList :: Ord a => Heap a b -> [(a, b)]
+ Data.Graph.Inductive.Internal.Heap: toList :: (Ord a) => Heap a b -> [(a, b)]
- Data.Graph.Inductive.Monad: class Monad m => GraphM m gr where matchAnyM g = do { vs <- labNodesM g; case vs of { [] -> fail "Match Exception, Empty Graph" (v, _) : _ -> do { (Just c, g') <- matchM v g; return (c, g') } } } noNodesM = labNodesM >>. length nodeRangeM g = do { isE <- isEmptyM g; if isE then fail "nodeRangeM of empty graph" else do { vs <- nodesM g; return (minimum vs, maximum vs) } } labEdgesM = ufoldM (\ (p, v, _, s) -> ((map (i v) p ++ map (o v) s) ++)) [] where o v = \ (l, w) -> (v, w, l) i v = \ (l, w) -> (w, v, l)
+ Data.Graph.Inductive.Monad: class (Monad m) => GraphM m gr where matchAnyM g = do { vs <- labNodesM g; case vs of { [] -> fail "Match Exception, Empty Graph" (v, _) : _ -> do { (Just c, g') <- matchM v g; return (c, g') } } } noNodesM = labNodesM >>. length nodeRangeM g = do { isE <- isEmptyM g; if isE then fail "nodeRangeM of empty graph" else do { vs <- nodesM g; return (minimum vs, maximum vs) } } labEdgesM = ufoldM (\ (p, v, _, s) -> ((map (i v) p ++ map (o v) s) ++)) [] where o v = \ (l, w) -> (v, w, l) i v = \ (l, w) -> (w, v, l)
- Data.Graph.Inductive.Monad: contextM :: GraphM m gr => m (gr a b) -> Node -> m (Context a b)
+ Data.Graph.Inductive.Monad: contextM :: (GraphM m gr) => m (gr a b) -> Node -> m (Context a b)
- Data.Graph.Inductive.Monad: delNodeM :: GraphM m gr => Node -> m (gr a b) -> m (gr a b)
+ Data.Graph.Inductive.Monad: delNodeM :: (GraphM m gr) => Node -> m (gr a b) -> m (gr a b)
- Data.Graph.Inductive.Monad: delNodesM :: GraphM m gr => [Node] -> m (gr a b) -> m (gr a b)
+ Data.Graph.Inductive.Monad: delNodesM :: (GraphM m gr) => [Node] -> m (gr a b) -> m (gr a b)
- Data.Graph.Inductive.Monad: edgesM :: GraphM m gr => m (gr a b) -> m [Edge]
+ Data.Graph.Inductive.Monad: edgesM :: (GraphM m gr) => m (gr a b) -> m [Edge]
- Data.Graph.Inductive.Monad: labM :: GraphM m gr => m (gr a b) -> Node -> m (Maybe a)
+ Data.Graph.Inductive.Monad: labM :: (GraphM m gr) => m (gr a b) -> Node -> m (Maybe a)
- Data.Graph.Inductive.Monad: mkUGraphM :: GraphM m gr => [Node] -> [Edge] -> m (gr () ())
+ Data.Graph.Inductive.Monad: mkUGraphM :: (GraphM m gr) => [Node] -> [Edge] -> m (gr () ())
- Data.Graph.Inductive.Monad: newNodesM :: GraphM m gr => Int -> m (gr a b) -> m [Node]
+ Data.Graph.Inductive.Monad: newNodesM :: (GraphM m gr) => Int -> m (gr a b) -> m [Node]
- Data.Graph.Inductive.Monad: nodesM :: GraphM m gr => m (gr a b) -> m [Node]
+ Data.Graph.Inductive.Monad: nodesM :: (GraphM m gr) => m (gr a b) -> m [Node]
- Data.Graph.Inductive.Monad: ufoldM :: GraphM m gr => (Context a b -> c -> c) -> c -> m (gr a b) -> m c
+ Data.Graph.Inductive.Monad: ufoldM :: (GraphM m gr) => (Context a b -> c -> c) -> c -> m (gr a b) -> m c
- Data.Graph.Inductive.NodeMap: mkEdge :: Ord a => NodeMap a -> (a, a, b) -> Maybe (LEdge b)
+ Data.Graph.Inductive.NodeMap: mkEdge :: (Ord a) => NodeMap a -> (a, a, b) -> Maybe (LEdge b)
- Data.Graph.Inductive.NodeMap: mkEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b))
+ Data.Graph.Inductive.NodeMap: mkEdgeM :: (Ord a) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b))
- Data.Graph.Inductive.NodeMap: mkEdges :: Ord a => NodeMap a -> [(a, a, b)] -> Maybe [LEdge b]
+ Data.Graph.Inductive.NodeMap: mkEdges :: (Ord a) => NodeMap a -> [(a, a, b)] -> Maybe [LEdge b]
- Data.Graph.Inductive.NodeMap: mkEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b])
+ Data.Graph.Inductive.NodeMap: mkEdgesM :: (Ord a) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b])
- Data.Graph.Inductive.NodeMap: mkNode :: Ord a => NodeMap a -> a -> (LNode a, NodeMap a)
+ Data.Graph.Inductive.NodeMap: mkNode :: (Ord a) => NodeMap a -> a -> (LNode a, NodeMap a)
- Data.Graph.Inductive.NodeMap: mkNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)
+ Data.Graph.Inductive.NodeMap: mkNodeM :: (Ord a) => a -> NodeMapM a b g (LNode a)
- Data.Graph.Inductive.NodeMap: mkNode_ :: Ord a => NodeMap a -> a -> LNode a
+ Data.Graph.Inductive.NodeMap: mkNode_ :: (Ord a) => NodeMap a -> a -> LNode a
- Data.Graph.Inductive.NodeMap: mkNodes :: Ord a => NodeMap a -> [a] -> ([LNode a], NodeMap a)
+ Data.Graph.Inductive.NodeMap: mkNodes :: (Ord a) => NodeMap a -> [a] -> ([LNode a], NodeMap a)
- Data.Graph.Inductive.NodeMap: mkNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a]
+ Data.Graph.Inductive.NodeMap: mkNodesM :: (Ord a) => [a] -> NodeMapM a b g [LNode a]
- Data.Graph.Inductive.NodeMap: mkNodes_ :: Ord a => NodeMap a -> [a] -> [LNode a]
+ Data.Graph.Inductive.NodeMap: mkNodes_ :: (Ord a) => NodeMap a -> [a] -> [LNode a]
- Data.Graph.Inductive.Query.ArtPoint: ap :: Graph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Query.ArtPoint: ap :: (Graph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Query.BCC: bcc :: DynGraph gr => gr a b -> [gr a b]
+ Data.Graph.Inductive.Query.BCC: bcc :: (DynGraph gr) => gr a b -> [gr a b]
- Data.Graph.Inductive.Query.BFS: bfe :: Graph gr => Node -> gr a b -> [Edge]
+ Data.Graph.Inductive.Query.BFS: bfe :: (Graph gr) => Node -> gr a b -> [Edge]
- Data.Graph.Inductive.Query.BFS: bfen :: Graph gr => [Edge] -> gr a b -> [Edge]
+ Data.Graph.Inductive.Query.BFS: bfen :: (Graph gr) => [Edge] -> gr a b -> [Edge]
- Data.Graph.Inductive.Query.BFS: bfs :: Graph gr => Node -> gr a b -> [Node]
+ Data.Graph.Inductive.Query.BFS: bfs :: (Graph gr) => Node -> gr a b -> [Node]
- Data.Graph.Inductive.Query.BFS: bfsWith :: Graph gr => (Context a b -> c) -> Node -> gr a b -> [c]
+ Data.Graph.Inductive.Query.BFS: bfsWith :: (Graph gr) => (Context a b -> c) -> Node -> gr a b -> [c]
- Data.Graph.Inductive.Query.BFS: bfsn :: Graph gr => [Node] -> gr a b -> [Node]
+ Data.Graph.Inductive.Query.BFS: bfsn :: (Graph gr) => [Node] -> gr a b -> [Node]
- Data.Graph.Inductive.Query.BFS: bfsnWith :: Graph gr => (Context a b -> c) -> [Node] -> gr a b -> [c]
+ Data.Graph.Inductive.Query.BFS: bfsnWith :: (Graph gr) => (Context a b -> c) -> [Node] -> gr a b -> [c]
- Data.Graph.Inductive.Query.BFS: bft :: Graph gr => Node -> gr a b -> RTree
+ Data.Graph.Inductive.Query.BFS: bft :: (Graph gr) => Node -> gr a b -> RTree
- Data.Graph.Inductive.Query.BFS: esp :: Graph gr => Node -> Node -> gr a b -> Path
+ Data.Graph.Inductive.Query.BFS: esp :: (Graph gr) => Node -> Node -> gr a b -> Path
- Data.Graph.Inductive.Query.BFS: lbft :: Graph gr => Node -> gr a b -> LRTree b
+ Data.Graph.Inductive.Query.BFS: lbft :: (Graph gr) => Node -> gr a b -> LRTree b
- Data.Graph.Inductive.Query.BFS: lesp :: Graph gr => Node -> Node -> gr a b -> LPath b
+ Data.Graph.Inductive.Query.BFS: lesp :: (Graph gr) => Node -> Node -> gr a b -> LPath b
- Data.Graph.Inductive.Query.BFS: level :: Graph gr => Node -> gr a b -> [(Node, Int)]
+ Data.Graph.Inductive.Query.BFS: level :: (Graph gr) => Node -> gr a b -> [(Node, Int)]
- Data.Graph.Inductive.Query.BFS: leveln :: Graph gr => [(Node, Int)] -> gr a b -> [(Node, Int)]
+ Data.Graph.Inductive.Query.BFS: leveln :: (Graph gr) => [(Node, Int)] -> gr a b -> [(Node, Int)]
- Data.Graph.Inductive.Query.DFS: components :: Graph gr => gr a b -> [[Node]]
+ Data.Graph.Inductive.Query.DFS: components :: (Graph gr) => gr a b -> [[Node]]
- Data.Graph.Inductive.Query.DFS: dff :: Graph gr => [Node] -> gr a b -> [Tree Node]
+ Data.Graph.Inductive.Query.DFS: dff :: (Graph gr) => [Node] -> gr a b -> [Tree Node]
- Data.Graph.Inductive.Query.DFS: dff' :: Graph gr => gr a b -> [Tree Node]
+ Data.Graph.Inductive.Query.DFS: dff' :: (Graph gr) => gr a b -> [Tree Node]
- Data.Graph.Inductive.Query.DFS: dffWith :: Graph gr => CFun a b c -> [Node] -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: dffWith :: (Graph gr) => CFun a b c -> [Node] -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: dffWith' :: Graph gr => CFun a b c -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: dffWith' :: (Graph gr) => CFun a b c -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: dfs :: Graph gr => [Node] -> gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: dfs :: (Graph gr) => [Node] -> gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: dfs' :: Graph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: dfs' :: (Graph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: dfsWith :: Graph gr => CFun a b c -> [Node] -> gr a b -> [c]
+ Data.Graph.Inductive.Query.DFS: dfsWith :: (Graph gr) => CFun a b c -> [Node] -> gr a b -> [c]
- Data.Graph.Inductive.Query.DFS: dfsWith' :: Graph gr => CFun a b c -> gr a b -> [c]
+ Data.Graph.Inductive.Query.DFS: dfsWith' :: (Graph gr) => CFun a b c -> gr a b -> [c]
- Data.Graph.Inductive.Query.DFS: isConnected :: Graph gr => gr a b -> Bool
+ Data.Graph.Inductive.Query.DFS: isConnected :: (Graph gr) => gr a b -> Bool
- Data.Graph.Inductive.Query.DFS: noComponents :: Graph gr => gr a b -> Int
+ Data.Graph.Inductive.Query.DFS: noComponents :: (Graph gr) => gr a b -> Int
- Data.Graph.Inductive.Query.DFS: rdff :: Graph gr => [Node] -> gr a b -> [Tree Node]
+ Data.Graph.Inductive.Query.DFS: rdff :: (Graph gr) => [Node] -> gr a b -> [Tree Node]
- Data.Graph.Inductive.Query.DFS: rdff' :: Graph gr => gr a b -> [Tree Node]
+ Data.Graph.Inductive.Query.DFS: rdff' :: (Graph gr) => gr a b -> [Tree Node]
- Data.Graph.Inductive.Query.DFS: rdffWith :: Graph gr => CFun a b c -> [Node] -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: rdffWith :: (Graph gr) => CFun a b c -> [Node] -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: rdffWith' :: Graph gr => CFun a b c -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: rdffWith' :: (Graph gr) => CFun a b c -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: rdfs :: Graph gr => [Node] -> gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: rdfs :: (Graph gr) => [Node] -> gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: rdfs' :: Graph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: rdfs' :: (Graph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: reachable :: Graph gr => Node -> gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: reachable :: (Graph gr) => Node -> gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: scc :: Graph gr => gr a b -> [[Node]]
+ Data.Graph.Inductive.Query.DFS: scc :: (Graph gr) => gr a b -> [[Node]]
- Data.Graph.Inductive.Query.DFS: topsort :: Graph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: topsort :: (Graph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: topsort' :: Graph gr => gr a b -> [a]
+ Data.Graph.Inductive.Query.DFS: topsort' :: (Graph gr) => gr a b -> [a]
- Data.Graph.Inductive.Query.DFS: udff :: Graph gr => [Node] -> gr a b -> [Tree Node]
+ Data.Graph.Inductive.Query.DFS: udff :: (Graph gr) => [Node] -> gr a b -> [Tree Node]
- Data.Graph.Inductive.Query.DFS: udff' :: Graph gr => gr a b -> [Tree Node]
+ Data.Graph.Inductive.Query.DFS: udff' :: (Graph gr) => gr a b -> [Tree Node]
- Data.Graph.Inductive.Query.DFS: udffWith :: Graph gr => CFun a b c -> [Node] -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: udffWith :: (Graph gr) => CFun a b c -> [Node] -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: udffWith' :: Graph gr => CFun a b c -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: udffWith' :: (Graph gr) => CFun a b c -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: udfs :: Graph gr => [Node] -> gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: udfs :: (Graph gr) => [Node] -> gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: udfs' :: Graph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Query.DFS: udfs' :: (Graph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Query.DFS: xdfWith :: Graph gr => CFun a b [Node] -> CFun a b c -> [Node] -> gr a b -> ([Tree c], gr a b)
+ Data.Graph.Inductive.Query.DFS: xdfWith :: (Graph gr) => CFun a b [Node] -> CFun a b c -> [Node] -> gr a b -> ([Tree c], gr a b)
- Data.Graph.Inductive.Query.DFS: xdffWith :: Graph gr => CFun a b [Node] -> CFun a b c -> [Node] -> gr a b -> [Tree c]
+ Data.Graph.Inductive.Query.DFS: xdffWith :: (Graph gr) => CFun a b [Node] -> CFun a b c -> [Node] -> gr a b -> [Tree c]
- Data.Graph.Inductive.Query.DFS: xdfsWith :: Graph gr => CFun a b [Node] -> CFun a b c -> [Node] -> gr a b -> [c]
+ Data.Graph.Inductive.Query.DFS: xdfsWith :: (Graph gr) => CFun a b [Node] -> CFun a b c -> [Node] -> gr a b -> [c]
- Data.Graph.Inductive.Query.Dominators: dom :: Graph gr => gr a b -> Node -> [(Node, [Node])]
+ Data.Graph.Inductive.Query.Dominators: dom :: (Graph gr) => gr a b -> Node -> [(Node, [Node])]
- Data.Graph.Inductive.Query.Dominators: iDom :: Graph gr => gr a b -> Node -> [(Node, Node)]
+ Data.Graph.Inductive.Query.Dominators: iDom :: (Graph gr) => gr a b -> Node -> [(Node, Node)]
- Data.Graph.Inductive.Query.GVD: nearestNode :: Real b => Node -> Voronoi b -> Maybe Node
+ Data.Graph.Inductive.Query.GVD: nearestNode :: Node -> Voronoi b -> Maybe Node
- Data.Graph.Inductive.Query.Indep: indep :: DynGraph gr => gr a b -> [Node]
+ Data.Graph.Inductive.Query.Indep: indep :: (DynGraph gr) => gr a b -> [Node]
- Data.Graph.Inductive.Query.Indep: indepSize :: DynGraph gr => gr a b -> ([Node], Int)
+ Data.Graph.Inductive.Query.Indep: indepSize :: (DynGraph gr) => gr a b -> ([Node], Int)
- Data.Graph.Inductive.Query.MaxFlow: getRevEdges :: Num b => [Edge] -> [LEdge b]
+ Data.Graph.Inductive.Query.MaxFlow: getRevEdges :: (Num b) => [Edge] -> [LEdge b]
- Data.Graph.Inductive.Query.MaxFlow: updAdjList :: Num b => Adj (b, b, b) -> Node -> b -> Bool -> Adj (b, b, b)
+ Data.Graph.Inductive.Query.MaxFlow: updAdjList :: (Num b) => Adj (b, b, b) -> Node -> b -> Bool -> Adj (b, b, b)
- Data.Graph.Inductive.Query.Monad: apply' :: Monad m => GT m g a -> g -> m (a, g)
+ Data.Graph.Inductive.Query.Monad: apply' :: (Monad m) => GT m g a -> g -> m (a, g)
- Data.Graph.Inductive.Query.Monad: applyWith :: Monad m => (a -> b) -> GT m g a -> m g -> m (b, g)
+ Data.Graph.Inductive.Query.Monad: applyWith :: (Monad m) => (a -> b) -> GT m g a -> m g -> m (b, g)
- Data.Graph.Inductive.Query.Monad: applyWith' :: Monad m => (a -> b) -> GT m g a -> g -> m (b, g)
+ Data.Graph.Inductive.Query.Monad: applyWith' :: (Monad m) => (a -> b) -> GT m g a -> g -> m (b, g)
- Data.Graph.Inductive.Query.Monad: condMGT :: Monad m => (m s -> m Bool) -> GT m s a -> GT m s a -> GT m s a
+ Data.Graph.Inductive.Query.Monad: condMGT :: (Monad m) => (m s -> m Bool) -> GT m s a -> GT m s a -> GT m s a
- Data.Graph.Inductive.Query.Monad: condMGT' :: Monad m => (s -> Bool) -> GT m s a -> GT m s a -> GT m s a
+ Data.Graph.Inductive.Query.Monad: condMGT' :: (Monad m) => (s -> Bool) -> GT m s a -> GT m s a -> GT m s a
- Data.Graph.Inductive.Query.Monad: dffM :: GraphM m gr => [Node] -> GT m (gr a b) [Tree Node]
+ Data.Graph.Inductive.Query.Monad: dffM :: (GraphM m gr) => [Node] -> GT m (gr a b) [Tree Node]
- Data.Graph.Inductive.Query.Monad: dfsGT :: GraphM m gr => [Node] -> GT m (gr a b) [Node]
+ Data.Graph.Inductive.Query.Monad: dfsGT :: (GraphM m gr) => [Node] -> GT m (gr a b) [Node]
- Data.Graph.Inductive.Query.Monad: dfsM :: GraphM m gr => [Node] -> m (gr a b) -> m [Node]
+ Data.Graph.Inductive.Query.Monad: dfsM :: (GraphM m gr) => [Node] -> m (gr a b) -> m [Node]
- Data.Graph.Inductive.Query.Monad: dfsM' :: GraphM m gr => m (gr a b) -> m [Node]
+ Data.Graph.Inductive.Query.Monad: dfsM' :: (GraphM m gr) => m (gr a b) -> m [Node]
- Data.Graph.Inductive.Query.Monad: getContext :: GraphM m gr => GT m (gr a b) (Context a b)
+ Data.Graph.Inductive.Query.Monad: getContext :: (GraphM m gr) => GT m (gr a b) (Context a b)
- Data.Graph.Inductive.Query.Monad: getNode :: GraphM m gr => GT m (gr a b) Node
+ Data.Graph.Inductive.Query.Monad: getNode :: (GraphM m gr) => GT m (gr a b) Node
- Data.Graph.Inductive.Query.Monad: getNodes :: GraphM m gr => GT m (gr a b) [Node]
+ Data.Graph.Inductive.Query.Monad: getNodes :: (GraphM m gr) => GT m (gr a b) [Node]
- Data.Graph.Inductive.Query.Monad: graphDff :: GraphM m gr => [Node] -> m (gr a b) -> m [Tree Node]
+ Data.Graph.Inductive.Query.Monad: graphDff :: (GraphM m gr) => [Node] -> m (gr a b) -> m [Tree Node]
- Data.Graph.Inductive.Query.Monad: graphDff' :: GraphM m gr => m (gr a b) -> m [Tree Node]
+ Data.Graph.Inductive.Query.Monad: graphDff' :: (GraphM m gr) => m (gr a b) -> m [Tree Node]
- Data.Graph.Inductive.Query.Monad: graphFilter :: GraphM m gr => (Context a b -> Bool) -> m (gr a b) -> m [Context a b]
+ Data.Graph.Inductive.Query.Monad: graphFilter :: (GraphM m gr) => (Context a b -> Bool) -> m (gr a b) -> m [Context a b]
- Data.Graph.Inductive.Query.Monad: graphFilterM :: GraphM m gr => (Context a b -> Bool) -> GT m (gr a b) [Context a b]
+ Data.Graph.Inductive.Query.Monad: graphFilterM :: (GraphM m gr) => (Context a b -> Bool) -> GT m (gr a b) [Context a b]
- Data.Graph.Inductive.Query.Monad: graphNodes :: GraphM m gr => m (gr a b) -> m [Node]
+ Data.Graph.Inductive.Query.Monad: graphNodes :: (GraphM m gr) => m (gr a b) -> m [Node]
- Data.Graph.Inductive.Query.Monad: graphNodesM :: GraphM m gr => GT m (gr a b) [Node]
+ Data.Graph.Inductive.Query.Monad: graphNodesM :: (GraphM m gr) => GT m (gr a b) [Node]
- Data.Graph.Inductive.Query.Monad: graphNodesM0 :: GraphM m gr => GT m (gr a b) [Node]
+ Data.Graph.Inductive.Query.Monad: graphNodesM0 :: (GraphM m gr) => GT m (gr a b) [Node]
- Data.Graph.Inductive.Query.Monad: graphRec :: GraphM m gr => GT m (gr a b) c -> (c -> d -> d) -> d -> GT m (gr a b) d
+ Data.Graph.Inductive.Query.Monad: graphRec :: (GraphM m gr) => GT m (gr a b) c -> (c -> d -> d) -> d -> GT m (gr a b) d
- Data.Graph.Inductive.Query.Monad: graphUFold :: GraphM m gr => (Context a b -> c -> c) -> c -> GT m (gr a b) c
+ Data.Graph.Inductive.Query.Monad: graphUFold :: (GraphM m gr) => (Context a b -> c -> c) -> c -> GT m (gr a b) c
- Data.Graph.Inductive.Query.Monad: recMGT :: Monad m => (m s -> m Bool) -> GT m s a -> (a -> b -> b) -> b -> GT m s b
+ Data.Graph.Inductive.Query.Monad: recMGT :: (Monad m) => (m s -> m Bool) -> GT m s a -> (a -> b -> b) -> b -> GT m s b
- Data.Graph.Inductive.Query.Monad: recMGT' :: Monad m => (s -> Bool) -> GT m s a -> (a -> b -> b) -> b -> GT m s b
+ Data.Graph.Inductive.Query.Monad: recMGT' :: (Monad m) => (s -> Bool) -> GT m s a -> (a -> b -> b) -> b -> GT m s b
- Data.Graph.Inductive.Query.Monad: runGT :: Monad m => GT m g a -> m g -> m a
+ Data.Graph.Inductive.Query.Monad: runGT :: (Monad m) => GT m g a -> m g -> m a
- Data.Graph.Inductive.Query.Monad: sucGT :: GraphM m gr => Node -> GT m (gr a b) (Maybe [Node])
+ Data.Graph.Inductive.Query.Monad: sucGT :: (GraphM m gr) => Node -> GT m (gr a b) (Maybe [Node])
- Data.Graph.Inductive.Query.Monad: sucM :: GraphM m gr => Node -> m (gr a b) -> m (Maybe [Node])
+ Data.Graph.Inductive.Query.Monad: sucM :: (GraphM m gr) => Node -> m (gr a b) -> m (Maybe [Node])
- Data.Graph.Inductive.Query.TransClos: trc :: DynGraph gr => gr a b -> gr a ()
+ Data.Graph.Inductive.Query.TransClos: trc :: (DynGraph gr) => gr a b -> gr a ()

Files

ChangeLog view
@@ -1,3 +1,19 @@+5.5.3.0+-------++* Additional closure functions by Matthew Danish.++* `Bifunctor` instances for base >= 4.8.0.0.++* An `ST`-based `GraphM` instance.++* Addition of `order` and `size` functions for finding the number of+  nodes and edges respectively in a graph (the former is an alias for+  the existing `noNodes` function).++* The rules for faster implementations of `insNode` and `insEdge` for+  `PatriciaTree` should fire more often now.+ 5.5.2.3 ------- 
Data/Graph/Inductive/Graph.hs view
@@ -34,6 +34,8 @@     Graph(..),     DynGraph(..),     -- * Operations+    order,+    size,     -- ** Graph Folds and Maps     ufold,gmap,nmap,emap,nemap,     -- ** Graph Projection@@ -173,8 +175,29 @@  class (Graph gr) => DynGraph gr where   -- | Merge the 'Context' into the 'DynGraph'.+  --+  --   Contexts should only refer to either a Node already in a graph+  --   or the node in the Context itself (for loops).   (&) :: Context a b -> gr a b -> gr a b ++-- | The number of nodes in the graph.  An alias for 'noNodes'.+order :: (Graph gr) => gr a b -> Int+order = noNodes++-- | The number of edges in the graph.+--+--   Note that this counts every edge found, so if you are+--   representing an unordered graph by having each edge mirrored this+--   will be incorrect.+--+--   If you created an unordered graph by either mirroring every edge+--   (including loops!) or using the @undir@ function in+--   "Data.Graph.Inductive.Basic" then you can safely halve the value+--   returned by this.+size :: (Graph gr) => gr a b -> Int+size = length . labEdges+ -- | Fold a function over the graph. ufold :: (Graph gr) => (Context a b -> c -> c) -> c -> gr a b -> c ufold f u g@@ -252,6 +275,7 @@     (pr,_,la,su) = fromMaybe                      (error ("insEdge: cannot add edge from non-existent vertex " ++ show v))                      mcxt+{-# NOINLINE [0] insEdge #-}  -- | Remove a 'Node' from the 'Graph'. delNode :: (Graph gr) => Node -> gr a b -> gr a b@@ -272,7 +296,7 @@ -- --   NOTE: in the case of multiple edges with the same label, this --   will only delete the /first/ such edge.  To delete all such---   edges, please use 'delAllLedges'.+--   edges, please use 'delAllLedge'. delLEdge :: (DynGraph gr, Eq b) => LEdge b -> gr a b -> gr a b delLEdge = delLEdgeBy delete @@ -289,10 +313,12 @@ -- | Insert multiple 'LNode's into the 'Graph'. insNodes   :: (DynGraph gr) => [LNode a] -> gr a b -> gr a b insNodes vs g = foldl' (flip insNode) g vs+{-# INLINABLE insNodes #-}  -- | Insert multiple 'LEdge's into the 'Graph'. insEdges :: (DynGraph gr) => [LEdge b] -> gr a b -> gr a b insEdges es g = foldl' (flip insEdge) g es+{-# INLINABLE insEdges #-}  -- | Remove multiple 'Node's from the 'Graph'. delNodes :: (Graph gr) => [Node] -> gr a b -> gr a b
Data/Graph/Inductive/Monad/IOArray.hs view
@@ -46,9 +46,11 @@                         Just (_,l,s) -> '\n':show v++":"++show l++"->"++show s'                           where s' = unsafePerformIO (removeDel m s) +-- | Please not that this instance is unsafe. instance (Show a,Show b) => Show (SGr a b) where   show (SGr g) = showGraph g +-- | Please not that this instance is unsafe. instance (Show a,Show b) => Show (IO (SGr a b)) where   show g = unsafePerformIO (do {(SGr g') <- g; return (showGraph g')}) 
+ Data/Graph/Inductive/Monad/STArray.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses #-}++-- (c) 2002 by Martin Erwig [see file COPYRIGHT]+-- | Static IOArray-based Graphs+module Data.Graph.Inductive.Monad.STArray(+    -- * Graph Representation+    SGr(..), GraphRep, Context', USGr,+    defaultGraphSize, emptyN,+    -- * Utilities+    removeDel,+) where++import Data.Graph.Inductive.Graph+import Data.Graph.Inductive.Monad++import Control.Monad+import Control.Monad.ST+import Data.Array+import Data.Array.ST+import System.IO.Unsafe++++----------------------------------------------------------------------+-- GRAPH REPRESENTATION+----------------------------------------------------------------------++newtype SGr s a b = SGr (GraphRep s a b)++type GraphRep s a b = (Int,Array Node (Context' a b),STArray s Node Bool)+type Context'   a b = Maybe (Adj b,a,Adj b)++type USGr s = SGr s () ()+++----------------------------------------------------------------------+-- CLASS INSTANCES+----------------------------------------------------------------------++-- Show+--+showGraph :: (Show a,Show b) => GraphRep RealWorld a b -> String+showGraph (_,a,m) = concatMap showAdj (indices a)+    where showAdj v | unsafeST (readArray m v) = ""+                    | otherwise = case a!v of+                        Nothing      -> ""+                        Just (_,l,s) -> '\n':show v++":"++show l++"->"++show s'+                          where s' = unsafeST (removeDel m s)++unsafeST :: ST RealWorld a -> a+unsafeST = unsafePerformIO . stToIO++-- | Please not that this instance is unsafe.+instance (Show a,Show b) => Show (SGr RealWorld a b) where+  show (SGr g) = showGraph g++{-+run :: Show (IO a) => IO a -> IO ()+run x = seq x (print x)+-}++-- GraphM+--+instance GraphM (ST s) (SGr s) where+  emptyM = emptyN defaultGraphSize+  isEmptyM g = do {SGr (n,_,_) <- g; return (n==0)}+  matchM v g = do g'@(SGr (n,a,m)) <- g+                  case a!v of+                    Nothing -> return (Nothing,g')+                    Just (pr,l,su) ->+                       do b <- readArray m v+                          if b then return (Nothing,g') else+                             do s  <- removeDel m su+                                p' <- removeDel m pr+                                let p = filter ((/=v).snd) p'+                                writeArray m v True+                                return (Just (p,v,l,s),SGr (n-1,a,m))+  mkGraphM vs es = do m <- newArray (1,n) False+                      return (SGr (n,pr,m))+          where nod  = array bnds (map (\(v,l)->(v,Just ([],l,[]))) vs)+                su   = accum addSuc nod (map (\(v,w,l)->(v,(l,w))) es)+                pr   = accum addPre su (map (\(v,w,l)->(w,(l,v))) es)+                bnds = (minimum vs',maximum vs')+                vs'  = map fst vs+                n    = length vs+                addSuc (Just (p,l',s)) (l,w) = Just (p,l',(l,w):s)+                addSuc Nothing _ = error "mkGraphM (SGr): addSuc Nothing"+                addPre (Just (p,l',s)) (l,w) = Just ((l,w):p,l',s)+                addPre Nothing _ = error "mkGraphM (SGr): addPre Nothing"+  labNodesM g = do (SGr (_,a,m)) <- g+                   let getLNode vs (_,Nothing)      = return vs+                       getLNode vs (v,Just (_,l,_)) =+                           do b <- readArray m v+                              return (if b then vs else (v,l):vs)+                   foldM getLNode [] (assocs a)++defaultGraphSize :: Int+defaultGraphSize = 100++emptyN :: Int -> ST s (SGr s a b)+emptyN n = do m <- newArray (1,n) False+              return (SGr (0,array (1,n) [(i,Nothing) | i <- [1..n]],m))++----------------------------------------------------------------------+-- UTILITIES+----------------------------------------------------------------------++++-- | filter list (of successors\/predecessors) through a boolean ST array+-- representing deleted marks+removeDel :: STArray s Node Bool -> Adj b -> ST s (Adj b)+removeDel m = filterM (\(_,v)->do {b<-readArray m v;return (not b)})
Data/Graph/Inductive/NodeMap.hs view
@@ -223,16 +223,16 @@        return r  -- | Monadic node construction.-mkNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)+mkNodeM :: (Ord a) => a -> NodeMapM a b g (LNode a) mkNodeM = liftN2 mkNode -mkNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a]+mkNodesM :: (Ord a) => [a] -> NodeMapM a b g [LNode a] mkNodesM = liftN2 mkNodes -mkEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b))+mkEdgeM :: (Ord a) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b)) mkEdgeM = liftN2' mkEdge -mkEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b])+mkEdgesM :: (Ord a) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b]) mkEdgesM = liftN2' mkEdges  insMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)
Data/Graph/Inductive/PatriciaTree.hs view
@@ -28,7 +28,6 @@ import Data.Graph.Inductive.Graph  import           Control.Applicative (liftA2)-import           Control.Arrow       (second) import           Data.IntMap         (IntMap) import qualified Data.IntMap         as IM import           Data.List           (sort)@@ -42,6 +41,12 @@ import GHC.Generics (Generic) #endif +#if MIN_VERSION_base (4,8,0)+import Data.Bifunctor+#else+import Control.Arrow (second)+#endif+ ---------------------------------------------------------------------- -- GRAPH REPRESENTATION ----------------------------------------------------------------------@@ -118,6 +123,15 @@ #if MIN_VERSION_containers (0,4,2) instance (NFData a, NFData b) => NFData (Gr a b) where   rnf (Gr g) = rnf g+#endif++#if MIN_VERSION_base (4,8,0)+instance Bifunctor Gr where+  bimap = fastNEMap++  first = fastNMap++  second = fastEMap #endif  matchGr :: Node -> Gr a b -> Decomp Gr a b
Data/Graph/Inductive/Query/GVD.hs view
@@ -50,7 +50,7 @@  -- | Try to determine the nearest root node to the one specified in the --   shortest path forest.-nearestNode :: (Real b) => Node -> Voronoi b -> Maybe Node+nearestNode :: Node -> Voronoi b -> Maybe Node nearestNode v = fmap (fst . last . unLPath) . maybePath v  -- | The distance to the 'nearestNode' (if there is one) in the
Data/Graph/Inductive/Query/TransClos.hs view
@@ -1,21 +1,40 @@ module Data.Graph.Inductive.Query.TransClos(-    trc+    trc, rc, tc ) where  import Data.Graph.Inductive.Graph-import Data.Graph.Inductive.Query.DFS (reachable)---getNewEdges :: (DynGraph gr) => [LNode a] -> gr a b -> [LEdge ()]-getNewEdges vs g = map (`toLEdge` ())-                   . concatMap (\u -> map ((,) u) (reachable u g))-                   $ map fst vs+import Data.Graph.Inductive.Query.BFS (bfen)  {-| Finds the transitive closure of a directed graph. Given a graph G=(V,E), its transitive closure is the graph: G* = (V,E*) where E*={(i,j): i,j in V and there is a path from i to j in G} -}+tc :: (DynGraph gr) => gr a b -> gr a ()+tc g = newEdges `insEdges` insNodes ln empty+  where+    ln       = labNodes g+    newEdges = [ (u, v, ()) | (u, _) <- ln, (_, v) <- bfen (outU g u) g ]+    outU gr  = map toEdge . out gr++{-|+Finds the transitive, reflexive closure of a directed graph.+Given a graph G=(V,E), its transitive closure is the graph:+G* = (V,E*) where E*={(i,j): i,j in V and either i = j or there is a path from i to j in G}+-} trc :: (DynGraph gr) => gr a b -> gr a ()-trc g = insEdges (getNewEdges ln g) (insNodes ln empty)-        where ln = labNodes g+trc g = newEdges `insEdges` insNodes ln empty+  where+    ln       = labNodes g+    newEdges = [ (u, v, ()) | (u, _) <- ln, (_, v) <- bfen [(u, u)] g ]++{-|+Finds the reflexive closure of a directed graph.+Given a graph G=(V,E), its transitive closure is the graph:+G* = (V,Er union E) where Er = {(i,i): i in V}+-}+rc :: (DynGraph gr) => gr a b -> gr a ()+rc g = newEdges `insEdges` insNodes ln empty+  where+    ln       = labNodes g+    newEdges = [ (u, u, ()) | (u, _) <- ln ]
Data/Graph/Inductive/Tree.hs view
@@ -14,7 +14,6 @@ import Data.Graph.Inductive.Graph  import           Control.Applicative (liftA2)-import           Control.Arrow       (first, second) import           Data.List           (foldl', sort) import           Data.Map            (Map) import qualified Data.Map            as M@@ -28,6 +27,12 @@ import GHC.Generics (Generic) #endif +#if MIN_VERSION_base (4,8,0)+import Data.Bifunctor+#else+import Control.Arrow (first, second)+#endif+ ---------------------------------------------------------------------- -- GRAPH REPRESENTATION ----------------------------------------------------------------------@@ -128,6 +133,15 @@ #if MIN_VERSION_containers (0,4,2) instance (NFData a, NFData b) => NFData (Gr a b) where   rnf (Gr g) = rnf g+#endif++#if MIN_VERSION_base (4,8,0)+instance Bifunctor Gr where+  bimap = nemap++  first = nmap++  second = emap #endif  ----------------------------------------------------------------------
fgl.cabal view
@@ -1,5 +1,5 @@ name:          fgl-version:       5.5.2.3+version:       5.5.3.0 license:       BSD3 license-file:  LICENSE author:        Martin Erwig, Ivan Lazar Miljenovic@@ -18,7 +18,7 @@                ChangeLog  tested-with:   GHC == 7.0.4, GHC == 7.2.2, GHC == 7.4.2, GHC == 7.6.3,-               GHC == 7.8.4, GHC == 7.10.2, GHC == 7.11.*+               GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.1.*  source-repository head     type:         git@@ -46,6 +46,7 @@         Data.Graph.Inductive.Query,         Data.Graph.Inductive.Tree,         Data.Graph.Inductive.Monad.IOArray,+        Data.Graph.Inductive.Monad.STArray,         Data.Graph.Inductive.Query.ArtPoint,         Data.Graph.Inductive.Query.BCC,         Data.Graph.Inductive.Query.BFS,@@ -89,7 +90,7 @@      build-depends:    fgl                     , base-                    , QuickCheck >= 2.8 && < 2.9+                    , QuickCheck >= 2.8 && < 2.10                     , hspec >= 2.1 && < 2.3                     , containers @@ -105,5 +106,4 @@      ghc-options:      -Wall -    ghc-prof-options: -prof -auto }
test/Data/Graph/Inductive/Query/Properties.hs view
@@ -26,7 +26,7 @@ import Test.QuickCheck  import           Control.Arrow (second)-import           Data.List     (delete, sort, unfoldr)+import           Data.List     (delete, sort, unfoldr, group, (\\)) import qualified Data.Set      as S  #if __GLASGOW_HASKELL__ < 710@@ -327,18 +327,41 @@ -- ----------------------------------------------------------------------------- -- TransClos -test_trc :: (ArbGraph gr, Eq (BaseGraph gr a ())) => Proxy (gr a b)-                                                  -> UConnected (SimpleGraph gr) a ()-                                                  -> Bool-test_trc _ cg = gReach == trc g+-- | The transitive, reflexive closure of a graph means that every+-- node is a successor of itself, and also that if (a, b) is an edge,+-- and (b, c) is an edge, then (a, c) must also be an edge.+test_trc :: DynGraph gr => Proxy (gr a b) -> (NoMultipleEdges gr) a b -> Bool+test_trc _ nme = all valid $ nodes gTrans   where-    g = connGraph cg+    g       = emap (const ()) (nmeGraph nme)+    gTrans  = trc g+    valid n =+      -- For each node n, check that:+      --   the successors for n in gTrans are a superset of the successors for n in g.+      null (suc g n \\ suc gTrans n) &&+      --   the successors for n in gTrans are exactly equal to the reachable nodes for n in g, plus n.+      sort (suc gTrans n) == map head (group (sort (n:[ v | u <- suc g n, v <- reachable u g ]))) -    lns = labNodes g+-- | The transitive closure of a graph means that if (a, b) is an+-- edge, and (b, c) is an edge, then (a, c) must also be an edge.+test_tc :: DynGraph gr => Proxy (gr a b) -> (NoMultipleEdges gr) a b -> Bool+test_tc _ nme = all valid $ nodes gTrans+  where+    g       = nmeGraph nme+    gTrans  = tc g+    valid n =+      -- For each node n, check that:+      --   the successors for n in gTrans are a superset of the successors for n in g.+      null (suc g n \\ suc gTrans n) &&+      --   the successors for n in gTrans are exactly equal to the reachable nodes for n in g.+      sort (suc gTrans n) == map head (group (sort [ v | u <- suc g n, v <- reachable u g ])) -    gReach = (`asTypeOf` g)-             . insEdges [(v,w,()) | (v,_) <- lns, (w,_) <- lns]-             $ mkGraph lns []+-- | The reflexive closure of a graph means that all nodes are a+-- successor of themselves.+test_rc :: DynGraph gr => Proxy (gr a b) -> gr a b -> Bool+test_rc _ g = and [ n `elem` suc gRefl n | n <- nodes gRefl ]+  where+    gRefl = rc g  -- ----------------------------------------------------------------------------- -- Utility functions
test/TestSuite.hs view
@@ -117,9 +117,11 @@   test_maxFlow   propP "msTree"       test_msTree   propP "sp"           test_sp-  keepSmall $+  keepSmall $ do     -- Just producing the sample graph to compare against is O(|V|^2)     propP "trc"        test_trc+    propP "tc"         test_tc+    propP "rc"         test_rc   where     propP str = prop str . ($p)