packages feed

graphs 0.6.0.1 → 0.7

raw patch · 15 files changed

+115/−18 lines, 15 filesdep +transformers-compatdep ~basedep ~transformersPVP ok

version bump matches the API change (PVP)

Dependencies added: transformers-compat

Dependency ranges changed: base, transformers

API changes (from Hackage documentation)

- Data.Graph.AdjacencyList: instance Applicative (AdjacencyList i)
- Data.Graph.AdjacencyList: instance Functor (AdjacencyList i)
- Data.Graph.AdjacencyList: instance Ix i => AdjacencyListGraph (AdjacencyList i)
- Data.Graph.AdjacencyList: instance Monad (AdjacencyList i)
- Data.Graph.AdjacencyList: instance Ord i => Graph (AdjacencyList i)
- Data.Graph.AdjacencyList: runAdjacencyList :: AdjacencyList i a -> Array i [i] -> a
- Data.Graph.AdjacencyMatrix: instance (IArray arr Bool, Ix i) => AdjacencyMatrixGraph (AdjacencyMatrix arr i)
- Data.Graph.AdjacencyMatrix: instance Applicative (AdjacencyMatrix arr i)
- Data.Graph.AdjacencyMatrix: instance Functor (AdjacencyMatrix arr i)
- Data.Graph.AdjacencyMatrix: instance Monad (AdjacencyMatrix arr i)
- Data.Graph.AdjacencyMatrix: instance Ord i => Graph (AdjacencyMatrix arr i)
- Data.Graph.AdjacencyMatrix: runAdjacencyMatrix :: AdjacencyMatrix arr i a -> arr (i, i) Bool -> a
- Data.Graph.Algorithm: blackTarget :: GraphSearch g m -> Edge g -> g m
- Data.Graph.Algorithm: enterEdge :: GraphSearch g m -> Edge g -> g m
- Data.Graph.Algorithm: enterVertex :: GraphSearch g m -> Vertex g -> g m
- Data.Graph.Algorithm: exitVertex :: GraphSearch g m -> Vertex g -> g m
- Data.Graph.Algorithm: grayTarget :: GraphSearch g m -> Edge g -> g m
- Data.Graph.Algorithm: instance (Graph g, Monoid m) => Monoid (GraphSearch g m)
- Data.Graph.Algorithm: instance Graph g => Applicative (GraphSearch g)
- Data.Graph.Algorithm: instance Graph g => Functor (GraphSearch g)
- Data.Graph.Algorithm: instance Graph g => Monad (GraphSearch g)
- Data.Graph.Class: instance (Graph g, Error e) => Graph (ErrorT e g)
- Data.Graph.Class: instance (Graph g, Monoid m) => Graph (WriterT m g)
- Data.Graph.Class: instance (Graph g, Monoid w) => Graph (RWST r w s g)
- Data.Graph.Class: instance Graph Identity
- Data.Graph.Class: instance Graph g => Graph (IdentityT g)
- Data.Graph.Class: instance Graph g => Graph (MaybeT g)
- Data.Graph.Class: instance Graph g => Graph (ReaderT m g)
- Data.Graph.Class: instance Graph g => Graph (StateT s g)
- Data.Graph.Class.AdjacencyList: instance (AdjacencyListGraph g, Error e) => AdjacencyListGraph (ErrorT e g)
- Data.Graph.Class.AdjacencyList: instance (AdjacencyListGraph g, Monoid m) => AdjacencyListGraph (RWST r m s g)
- Data.Graph.Class.AdjacencyList: instance (AdjacencyListGraph g, Monoid m) => AdjacencyListGraph (WriterT m g)
- Data.Graph.Class.AdjacencyList: instance AdjacencyListGraph Identity
- Data.Graph.Class.AdjacencyList: instance AdjacencyListGraph g => AdjacencyListGraph (IdentityT g)
- Data.Graph.Class.AdjacencyList: instance AdjacencyListGraph g => AdjacencyListGraph (MaybeT g)
- Data.Graph.Class.AdjacencyList: instance AdjacencyListGraph g => AdjacencyListGraph (ReaderT e g)
- Data.Graph.Class.AdjacencyList: instance AdjacencyListGraph g => AdjacencyListGraph (StateT s g)
- Data.Graph.Class.AdjacencyMatrix: instance (AdjacencyMatrixGraph g, Error e) => AdjacencyMatrixGraph (ErrorT e g)
- Data.Graph.Class.AdjacencyMatrix: instance (AdjacencyMatrixGraph g, Monoid m) => AdjacencyMatrixGraph (RWST r m s g)
- Data.Graph.Class.AdjacencyMatrix: instance (AdjacencyMatrixGraph g, Monoid m) => AdjacencyMatrixGraph (WriterT m g)
- Data.Graph.Class.AdjacencyMatrix: instance AdjacencyMatrixGraph Identity
- Data.Graph.Class.AdjacencyMatrix: instance AdjacencyMatrixGraph g => AdjacencyMatrixGraph (IdentityT g)
- Data.Graph.Class.AdjacencyMatrix: instance AdjacencyMatrixGraph g => AdjacencyMatrixGraph (MaybeT g)
- Data.Graph.Class.AdjacencyMatrix: instance AdjacencyMatrixGraph g => AdjacencyMatrixGraph (ReaderT e g)
- Data.Graph.Class.AdjacencyMatrix: instance AdjacencyMatrixGraph g => AdjacencyMatrixGraph (StateT s g)
- Data.Graph.Class.Bidirectional: instance (BidirectionalGraph g, Error e) => BidirectionalGraph (ErrorT e g)
- Data.Graph.Class.Bidirectional: instance (BidirectionalGraph g, Monoid m) => BidirectionalGraph (RWST r m s g)
- Data.Graph.Class.Bidirectional: instance (BidirectionalGraph g, Monoid m) => BidirectionalGraph (WriterT m g)
- Data.Graph.Class.Bidirectional: instance BidirectionalGraph Identity
- Data.Graph.Class.Bidirectional: instance BidirectionalGraph g => BidirectionalGraph (IdentityT g)
- Data.Graph.Class.Bidirectional: instance BidirectionalGraph g => BidirectionalGraph (MaybeT g)
- Data.Graph.Class.Bidirectional: instance BidirectionalGraph g => BidirectionalGraph (ReaderT e g)
- Data.Graph.Class.Bidirectional: instance BidirectionalGraph g => BidirectionalGraph (StateT s g)
- Data.Graph.Class.EdgeEnumerable: instance (EdgeEnumerableGraph g, Error e) => EdgeEnumerableGraph (ErrorT e g)
- Data.Graph.Class.EdgeEnumerable: instance (EdgeEnumerableGraph g, Monoid m) => EdgeEnumerableGraph (RWST r m s g)
- Data.Graph.Class.EdgeEnumerable: instance (EdgeEnumerableGraph g, Monoid m) => EdgeEnumerableGraph (WriterT m g)
- Data.Graph.Class.EdgeEnumerable: instance EdgeEnumerableGraph Identity
- Data.Graph.Class.EdgeEnumerable: instance EdgeEnumerableGraph g => EdgeEnumerableGraph (IdentityT g)
- Data.Graph.Class.EdgeEnumerable: instance EdgeEnumerableGraph g => EdgeEnumerableGraph (MaybeT g)
- Data.Graph.Class.EdgeEnumerable: instance EdgeEnumerableGraph g => EdgeEnumerableGraph (ReaderT e g)
- Data.Graph.Class.EdgeEnumerable: instance EdgeEnumerableGraph g => EdgeEnumerableGraph (StateT s g)
- Data.Graph.Class.VertexEnumerable: instance (VertexEnumerableGraph g, Error e) => VertexEnumerableGraph (ErrorT e g)
- Data.Graph.Class.VertexEnumerable: instance (VertexEnumerableGraph g, Monoid m) => VertexEnumerableGraph (RWST r m s g)
- Data.Graph.Class.VertexEnumerable: instance (VertexEnumerableGraph g, Monoid m) => VertexEnumerableGraph (WriterT m g)
- Data.Graph.Class.VertexEnumerable: instance VertexEnumerableGraph Identity
- Data.Graph.Class.VertexEnumerable: instance VertexEnumerableGraph g => VertexEnumerableGraph (IdentityT g)
- Data.Graph.Class.VertexEnumerable: instance VertexEnumerableGraph g => VertexEnumerableGraph (MaybeT g)
- Data.Graph.Class.VertexEnumerable: instance VertexEnumerableGraph g => VertexEnumerableGraph (ReaderT m g)
- Data.Graph.Class.VertexEnumerable: instance VertexEnumerableGraph g => VertexEnumerableGraph (StateT s g)
- Data.Graph.Dual: instance AdjacencyMatrixGraph g => AdjacencyMatrixGraph (Dual g)
- Data.Graph.Dual: instance Applicative g => Applicative (Dual g)
- Data.Graph.Dual: instance BidirectionalGraph g => AdjacencyListGraph (Dual g)
- Data.Graph.Dual: instance BidirectionalGraph g => BidirectionalGraph (Dual g)
- Data.Graph.Dual: instance EdgeEnumerableGraph g => EdgeEnumerableGraph (Dual g)
- Data.Graph.Dual: instance Functor g => Functor (Dual g)
- Data.Graph.Dual: instance Graph g => Graph (Dual g)
- Data.Graph.Dual: instance Monad g => Monad (Dual g)
- Data.Graph.Dual: instance MonadTrans Dual
- Data.Graph.Dual: instance VertexEnumerableGraph g => VertexEnumerableGraph (Dual g)
- Data.Graph.Dual: runDual :: Dual g a -> g a
- Data.Graph.PropertyMap: getP :: PropertyMap m k v -> k -> m v
- Data.Graph.PropertyMap: putP :: PropertyMap m k v -> k -> v -> m (PropertyMap m k v)
+ Data.Graph.AdjacencyList: [runAdjacencyList] :: AdjacencyList i a -> Array i [i] -> a
+ Data.Graph.AdjacencyList: instance GHC.Arr.Ix i => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Data.Graph.AdjacencyList.AdjacencyList i)
+ Data.Graph.AdjacencyList: instance GHC.Base.Applicative (Data.Graph.AdjacencyList.AdjacencyList i)
+ Data.Graph.AdjacencyList: instance GHC.Base.Functor (Data.Graph.AdjacencyList.AdjacencyList i)
+ Data.Graph.AdjacencyList: instance GHC.Base.Monad (Data.Graph.AdjacencyList.AdjacencyList i)
+ Data.Graph.AdjacencyList: instance GHC.Classes.Ord i => Data.Graph.Class.Graph (Data.Graph.AdjacencyList.AdjacencyList i)
+ Data.Graph.AdjacencyMatrix: [runAdjacencyMatrix] :: AdjacencyMatrix arr i a -> arr (i, i) Bool -> a
+ Data.Graph.AdjacencyMatrix: instance (Data.Array.Base.IArray arr GHC.Types.Bool, GHC.Arr.Ix i) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
+ Data.Graph.AdjacencyMatrix: instance GHC.Base.Applicative (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
+ Data.Graph.AdjacencyMatrix: instance GHC.Base.Functor (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
+ Data.Graph.AdjacencyMatrix: instance GHC.Base.Monad (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
+ Data.Graph.AdjacencyMatrix: instance GHC.Classes.Ord i => Data.Graph.Class.Graph (Data.Graph.AdjacencyMatrix.AdjacencyMatrix arr i)
+ Data.Graph.Algorithm: [blackTarget] :: GraphSearch g m -> Edge g -> g m
+ Data.Graph.Algorithm: [enterEdge] :: GraphSearch g m -> Edge g -> g m
+ Data.Graph.Algorithm: [enterVertex] :: GraphSearch g m -> Vertex g -> g m
+ Data.Graph.Algorithm: [exitVertex] :: GraphSearch g m -> Vertex g -> g m
+ Data.Graph.Algorithm: [grayTarget] :: GraphSearch g m -> Edge g -> g m
+ Data.Graph.Algorithm: instance (Data.Graph.Class.Graph g, GHC.Base.Monoid m) => GHC.Base.Monoid (Data.Graph.Algorithm.GraphSearch g m)
+ Data.Graph.Algorithm: instance Data.Graph.Class.Graph g => GHC.Base.Applicative (Data.Graph.Algorithm.GraphSearch g)
+ Data.Graph.Algorithm: instance Data.Graph.Class.Graph g => GHC.Base.Functor (Data.Graph.Algorithm.GraphSearch g)
+ Data.Graph.Algorithm: instance Data.Graph.Class.Graph g => GHC.Base.Monad (Data.Graph.Algorithm.GraphSearch g)
+ Data.Graph.Class: instance (Data.Graph.Class.Graph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.Graph (Control.Monad.Trans.Error.ErrorT e g)
+ Data.Graph.Class: instance (Data.Graph.Class.Graph g, GHC.Base.Monoid m) => Data.Graph.Class.Graph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
+ Data.Graph.Class: instance (Data.Graph.Class.Graph g, GHC.Base.Monoid m) => Data.Graph.Class.Graph (Control.Monad.Trans.Writer.Strict.WriterT m g)
+ Data.Graph.Class: instance (Data.Graph.Class.Graph g, GHC.Base.Monoid w) => Data.Graph.Class.Graph (Control.Monad.Trans.RWS.Lazy.RWST r w s g)
+ Data.Graph.Class: instance (Data.Graph.Class.Graph g, GHC.Base.Monoid w) => Data.Graph.Class.Graph (Control.Monad.Trans.RWS.Strict.RWST r w s g)
+ Data.Graph.Class: instance Data.Graph.Class.Graph Data.Functor.Identity.Identity
+ Data.Graph.Class: instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Graph.Class: instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.Maybe.MaybeT g)
+ Data.Graph.Class: instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.Reader.ReaderT m g)
+ Data.Graph.Class: instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.State.Lazy.StateT s g)
+ Data.Graph.Class: instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Control.Monad.Trans.State.Strict.StateT s g)
+ Data.Graph.Class.AdjacencyList: instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Error.ErrorT e g)
+ Data.Graph.Class.AdjacencyList: instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
+ Data.Graph.Class.AdjacencyList: instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
+ Data.Graph.Class.AdjacencyList: instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
+ Data.Graph.Class.AdjacencyList: instance (Data.Graph.Class.AdjacencyList.AdjacencyListGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
+ Data.Graph.Class.AdjacencyList: instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph Data.Functor.Identity.Identity
+ Data.Graph.Class.AdjacencyList: instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Graph.Class.AdjacencyList: instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Maybe.MaybeT g)
+ Data.Graph.Class.AdjacencyList: instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.Reader.ReaderT e g)
+ Data.Graph.Class.AdjacencyList: instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.State.Lazy.StateT s g)
+ Data.Graph.Class.AdjacencyList: instance Data.Graph.Class.AdjacencyList.AdjacencyListGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Control.Monad.Trans.State.Strict.StateT s g)
+ Data.Graph.Class.AdjacencyMatrix: instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Error.ErrorT e g)
+ Data.Graph.Class.AdjacencyMatrix: instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
+ Data.Graph.Class.AdjacencyMatrix: instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
+ Data.Graph.Class.AdjacencyMatrix: instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
+ Data.Graph.Class.AdjacencyMatrix: instance (Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g, GHC.Base.Monoid m) => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
+ Data.Graph.Class.AdjacencyMatrix: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph Data.Functor.Identity.Identity
+ Data.Graph.Class.AdjacencyMatrix: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Graph.Class.AdjacencyMatrix: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Maybe.MaybeT g)
+ Data.Graph.Class.AdjacencyMatrix: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.Reader.ReaderT e g)
+ Data.Graph.Class.AdjacencyMatrix: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.State.Lazy.StateT s g)
+ Data.Graph.Class.AdjacencyMatrix: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Control.Monad.Trans.State.Strict.StateT s g)
+ Data.Graph.Class.Bidirectional: instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Error.ErrorT e g)
+ Data.Graph.Class.Bidirectional: instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
+ Data.Graph.Class.Bidirectional: instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
+ Data.Graph.Class.Bidirectional: instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
+ Data.Graph.Class.Bidirectional: instance (Data.Graph.Class.Bidirectional.BidirectionalGraph g, GHC.Base.Monoid m) => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
+ Data.Graph.Class.Bidirectional: instance Data.Graph.Class.Bidirectional.BidirectionalGraph Data.Functor.Identity.Identity
+ Data.Graph.Class.Bidirectional: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Graph.Class.Bidirectional: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Maybe.MaybeT g)
+ Data.Graph.Class.Bidirectional: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.Reader.ReaderT e g)
+ Data.Graph.Class.Bidirectional: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.State.Lazy.StateT s g)
+ Data.Graph.Class.Bidirectional: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Control.Monad.Trans.State.Strict.StateT s g)
+ Data.Graph.Class.EdgeEnumerable: instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Error.ErrorT e g)
+ Data.Graph.Class.EdgeEnumerable: instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
+ Data.Graph.Class.EdgeEnumerable: instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
+ Data.Graph.Class.EdgeEnumerable: instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
+ Data.Graph.Class.EdgeEnumerable: instance (Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
+ Data.Graph.Class.EdgeEnumerable: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph Data.Functor.Identity.Identity
+ Data.Graph.Class.EdgeEnumerable: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Graph.Class.EdgeEnumerable: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Maybe.MaybeT g)
+ Data.Graph.Class.EdgeEnumerable: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.Reader.ReaderT e g)
+ Data.Graph.Class.EdgeEnumerable: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.State.Lazy.StateT s g)
+ Data.Graph.Class.EdgeEnumerable: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Control.Monad.Trans.State.Strict.StateT s g)
+ Data.Graph.Class.VertexEnumerable: instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, Control.Monad.Trans.Error.Error e) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Error.ErrorT e g)
+ Data.Graph.Class.VertexEnumerable: instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.RWS.Lazy.RWST r m s g)
+ Data.Graph.Class.VertexEnumerable: instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.RWS.Strict.RWST r m s g)
+ Data.Graph.Class.VertexEnumerable: instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Writer.Lazy.WriterT m g)
+ Data.Graph.Class.VertexEnumerable: instance (Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g, GHC.Base.Monoid m) => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Writer.Strict.WriterT m g)
+ Data.Graph.Class.VertexEnumerable: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph Data.Functor.Identity.Identity
+ Data.Graph.Class.VertexEnumerable: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Graph.Class.VertexEnumerable: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Maybe.MaybeT g)
+ Data.Graph.Class.VertexEnumerable: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.Reader.ReaderT m g)
+ Data.Graph.Class.VertexEnumerable: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.State.Lazy.StateT s g)
+ Data.Graph.Class.VertexEnumerable: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Control.Monad.Trans.State.Strict.StateT s g)
+ Data.Graph.Dual: [runDual] :: Dual g a -> g a
+ Data.Graph.Dual: instance Control.Monad.Trans.Class.MonadTrans Data.Graph.Dual.Dual
+ Data.Graph.Dual: instance Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph g => Data.Graph.Class.AdjacencyMatrix.AdjacencyMatrixGraph (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.AdjacencyList.AdjacencyListGraph (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance Data.Graph.Class.Bidirectional.BidirectionalGraph g => Data.Graph.Class.Bidirectional.BidirectionalGraph (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph g => Data.Graph.Class.EdgeEnumerable.EdgeEnumerableGraph (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance Data.Graph.Class.Graph g => Data.Graph.Class.Graph (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph g => Data.Graph.Class.VertexEnumerable.VertexEnumerableGraph (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance GHC.Base.Applicative g => GHC.Base.Applicative (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance GHC.Base.Functor g => GHC.Base.Functor (Data.Graph.Dual.Dual g)
+ Data.Graph.Dual: instance GHC.Base.Monad g => GHC.Base.Monad (Data.Graph.Dual.Dual g)
+ Data.Graph.PropertyMap: [getP] :: PropertyMap m k v -> k -> m v
+ Data.Graph.PropertyMap: [putP] :: PropertyMap m k v -> k -> v -> m (PropertyMap m k v)

Files

CHANGELOG.markdown view
@@ -1,3 +1,7 @@+0.7+---+* Build warning-free on GHC 7.10 and GHC 8.0-rc1+ 0.6 --- * Fixed the `dfs` `enterVertex` and `exitVertex` order, they were wrong before.
README.markdown view
@@ -1,7 +1,7 @@ graphs ========== -[![Build Status](https://secure.travis-ci.org/ekmett/graphs.png?branch=master)](http://travis-ci.org/ekmett/graphs)+[![Hackage](https://img.shields.io/hackage/v/graphs.svg)](https://hackage.haskell.org/package/graphs) [![Build Status](https://secure.travis-ci.org/ekmett/graphs.png?branch=master)](http://travis-ci.org/ekmett/graphs)  This provides a "not-very-Haskelly" API for calculating traversals of graphs that may be too large to fit into memory. 
graphs.cabal view
@@ -1,6 +1,6 @@ name:          graphs category:      Algorithms, Data Structures, Graphs-version:       0.6.0.1+version:       0.7 license:       BSD3 cabal-version: >= 1.6 license-file:  LICENSE@@ -11,7 +11,70 @@ bug-reports:   http://github.com/ekmett/graphs/issues copyright:     Copyright (C) 2011-2013 Edward A. Kmett synopsis:      A simple monadic graph library-description:   A simple monadic graph library+description:+  A \"not-very-Haskelly\" API for calculating traversals of graphs that may be too large to fit into memory.+  The algorithms included are inspired by the visitor concept of the+  <http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/visitor_concepts.html Boost Graph Library>.+  .+  Here is a very simple example of how we might execute a depth-first-search. In this case the visitor simply collects the edges and vertices in the order that the corresponding functions get called. After the necessary imports,+  .+  > import Data.Array+  > import Data.Monoid+  > import Data.Graph.AdjacencyList+  > import Data.Graph.Algorithm+  > import Data.Graph.Algorithm.DepthFirstSearch+  . +  create an adjacency list where the vertices are labeled with integers.+  .+  > graph :: Array Int [Int]+  > graph = array (0, 3) [(0, [1,2]), (1, [3]), (2, [3]), (3, [])]+  .+  <<http://i.imgur.com/Pod1SH0.png>>+  .+  We need a data structure that instantiates `Monoid` to combine the results of+  our visitor functions.+  .+  @+    data Orderings = Orderings+      &#32;&#32;&#123;&#32;&#32;enterV :: [Int]+      &#32;&#32;,  enterE :: [(Int, Int)]+      &#32;&#32;,  gray   :: [(Int, Int)]+      &#32;&#32;,  exitV  :: [Int]+      &#32;&#32;,  black  :: [(Int, Int)]+      &#32;&#32;&#125;&#32;deriving Show+    . +    instance Monoid Orderings where+      &#32;mempty = Orderings [] [] [] [] []+      &#32;mappend (Orderings a1 a2 a3 a4 a5)(Orderings b1 b2 b3 b4 b5) =+      &#32;&#32;Orderings (a1 ++ b1) (a2 ++ b2) (a3 ++ b3) (a4 ++ b4) (a5 ++ b5)+  @+  . +  The `dfs` function's first argument is of type `GraphSearch` which is+  a visitor containing the functions to be run at various times during the search.+  The second argument is the starting vertex for the search.+  .+  @+    orderings :: GraphSearch (AdjacencyList Int) Orderings+    orderings = GraphSearch+      &#32;&#32;(\v -> return $ mempty &#123;enterV = [v]&#125;+      &#32;&#32;(\e -> return $ mempty &#123;enterE = [e]&#125;+      &#32;&#32;(\e -> return $ mempty &#123;gray   = [e]&#125;+      &#32;&#32;(\v -> return $ mempty &#123;exitV  = [v]&#125;+      &#32;&#32;(\e -> return $ mempty &#123;black  = [e]&#125;+  @+  .   +  Finally `runAdjacencylist` unwraps the function in the `Adjacencylist` newtype and runs+  it on `graph`.+  .+  > dfsTest :: Orderings+  > dfsTest = runAdjacencyList (dfs orderings 0) graph+  .+  Running `dfsTest` in ghci will yield:+  .+  @+    Orderings &#123;enterV = [0,2,3,1], enterE = [(0,2),(2,3),(0,1)], gray = [], exitV = [3,2,1,0], black = [(1,3)]&#125;+  @+ build-type:    Simple  extra-source-files: .travis.yml CHANGELOG.markdown README.markdown@@ -28,7 +91,8 @@   build-depends:     base         >= 4       && < 5,     array        >= 0.3     && < 0.7,-    transformers >= 0.2.2   && < 0.5,+    transformers >= 0.2.2   && < 0.6,+    transformers-compat >= 0.3 && < 1,     containers   >= 0.3     && < 0.6,     void         >= 0.5.5.1 && < 1 @@ -49,5 +113,10 @@   other-modules:     Data.Graph.Internal.Color -  ghc-options: -Wall+  ghc-options: -Wall -fno-warn-deprecations++  -- hack around the buggy unused matches check for class associated types in ghc 8 rc1+  if impl(ghc >= 8)+    ghc-options: -fno-warn-unused-matches+   hs-source-dirs: src
src/Data/Graph/AdjacencyList.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleContexts #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Adjacency.List@@ -17,7 +17,9 @@   , ask   ) where +#if __GLASGOW_HASKELL__ < 710 import Control.Applicative+#endif import Data.Ix import Data.Array import Data.Graph.PropertyMap
src/Data/Graph/AdjacencyMatrix.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleContexts #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Adjacency.Matrix@@ -17,7 +17,9 @@   , ask   ) where +#if __GLASGOW_HASKELL__ < 710 import Control.Applicative+#endif import Data.Ix import Data.Array.IArray import Data.Graph.PropertyMap
src/Data/Graph/Algorithm.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE CPP, TypeFamilies #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Algorithm@@ -16,9 +16,11 @@   ( GraphSearch(..)   ) where -import Control.Applicative import Control.Monad+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative import Data.Monoid+#endif  import Data.Graph.Class 
src/Data/Graph/Algorithm/BreadthFirstSearch.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE CPP, TypeFamilies #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Algorithm.BreadthFirstSearch@@ -20,7 +20,9 @@ import Control.Monad.Trans.Class import Control.Monad.Trans.State.Strict import Data.Foldable+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Sequence  import Data.Graph.Algorithm
src/Data/Graph/Algorithm/DepthFirstSearch.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE CPP, TypeFamilies #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Algorithm.DepthFirstSearch@@ -20,7 +20,9 @@ import Control.Monad.Trans.Class import Control.Monad.Trans.State.Strict import Data.Foldable+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif  import Data.Graph.Algorithm import Data.Graph.Class
src/Data/Graph/Class.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleContexts #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Class@@ -32,7 +32,9 @@ import Control.Monad.Trans.Reader import Control.Monad.Trans.Class import Data.Functor.Identity+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Graph.PropertyMap import Data.Void 
src/Data/Graph/Class/AdjacencyList.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleInstances #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleInstances #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Class.AdjacencyList@@ -30,7 +30,9 @@ import Control.Monad.Trans.Error import Control.Monad.Trans.Reader import Data.Functor.Identity+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Graph.Class  defaultOutEdges :: AdjacencyListGraph g => Vertex g -> g [(Vertex g, Vertex g)]
src/Data/Graph/Class/AdjacencyMatrix.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleInstances #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleInstances #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Class.AdjacencyMatrix@@ -28,7 +28,9 @@ import Control.Monad.Trans.Error import Control.Monad.Trans.Class import Data.Functor.Identity+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Graph.Class  class Graph g => AdjacencyMatrixGraph g where
src/Data/Graph/Class/Bidirectional.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleInstances #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleInstances #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Class.Bidirectional@@ -29,7 +29,9 @@ import Control.Monad.Trans.Maybe import Control.Monad.Trans.Error import Data.Functor.Identity+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Graph.Class.AdjacencyList  class AdjacencyListGraph g => BidirectionalGraph g where
src/Data/Graph/Class/EdgeEnumerable.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleContexts #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Class.EdgeEnumerable@@ -28,7 +28,9 @@ import Control.Monad.Trans.Error import Control.Monad.Trans.Class import Data.Functor.Identity+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Graph.Class  class Graph g => EdgeEnumerableGraph g where
src/Data/Graph/Class/VertexEnumerable.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleContexts #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Class.VertexEnumerable@@ -27,7 +27,9 @@ import Control.Monad.Trans.Error import Control.Monad.Trans.Class import Control.Monad.Trans.Reader+#if __GLASGOW_HASKELL__ < 710 import Data.Monoid+#endif import Data.Graph.Class import Data.Functor.Identity 
src/Data/Graph/Dual.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, FlexibleContexts #-}+{-# LANGUAGE CPP, TypeFamilies, FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module      :  Data.Graph.Dual@@ -15,7 +15,9 @@   ( Dual(..)   ) where +#if __GLASGOW_HASKELL__ < 710 import Control.Applicative+#endif import Control.Monad import Control.Monad.Trans.Class import Data.Graph.PropertyMap