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 +4/−0
- README.markdown +1/−1
- graphs.cabal +73/−4
- src/Data/Graph/AdjacencyList.hs +3/−1
- src/Data/Graph/AdjacencyMatrix.hs +3/−1
- src/Data/Graph/Algorithm.hs +4/−2
- src/Data/Graph/Algorithm/BreadthFirstSearch.hs +3/−1
- src/Data/Graph/Algorithm/DepthFirstSearch.hs +3/−1
- src/Data/Graph/Class.hs +3/−1
- src/Data/Graph/Class/AdjacencyList.hs +3/−1
- src/Data/Graph/Class/AdjacencyMatrix.hs +3/−1
- src/Data/Graph/Class/Bidirectional.hs +3/−1
- src/Data/Graph/Class/EdgeEnumerable.hs +3/−1
- src/Data/Graph/Class/VertexEnumerable.hs +3/−1
- src/Data/Graph/Dual.hs +3/−1
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 ========== -[](http://travis-ci.org/ekmett/graphs)+[](https://hackage.haskell.org/package/graphs) [](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+   {  enterV :: [Int]+   , enterE :: [(Int, Int)]+   , gray :: [(Int, Int)]+   , exitV :: [Int]+   , black :: [(Int, Int)]+   } deriving Show+ . + instance Monoid Orderings where+  mempty = Orderings [] [] [] [] []+  mappend (Orderings a1 a2 a3 a4 a5)(Orderings b1 b2 b3 b4 b5) =+   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+   (\v -> return $ mempty {enterV = [v]}+   (\e -> return $ mempty {enterE = [e]}+   (\e -> return $ mempty {gray = [e]}+   (\v -> return $ mempty {exitV = [v]}+   (\e -> return $ mempty {black = [e]}+ @+ . + 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 {enterV = [0,2,3,1], enterE = [(0,2),(2,3),(0,1)], gray = [], exitV = [3,2,1,0], black = [(1,3)]}+ @+ 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