-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Monad products
--   
--   Monad products
@package monad-products
@version 4.0.1


-- | Monad Products
module Control.Monad.Product

-- | disjoint <tt>Graph</tt> union as a <a>Monad</a> product
newtype Product g h a
Product :: (g a, h a) -> Product g h a
[runProduct] :: Product g h a -> (g a, h a)
instance (GHC.Base.Functor g, GHC.Base.Functor h) => GHC.Base.Functor (Control.Monad.Product.Product g h)
instance (Data.Functor.Bind.Class.Apply g, Data.Functor.Bind.Class.Apply h) => Data.Functor.Bind.Class.Apply (Control.Monad.Product.Product g h)
instance (GHC.Base.Applicative g, GHC.Base.Applicative h) => GHC.Base.Applicative (Control.Monad.Product.Product g h)
instance (Data.Functor.Bind.Class.Bind g, Data.Functor.Bind.Class.Bind h) => Data.Functor.Bind.Class.Bind (Control.Monad.Product.Product g h)
instance (GHC.Base.Monad g, GHC.Base.Monad h) => GHC.Base.Monad (Control.Monad.Product.Product g h)
instance (Data.Functor.Alt.Alt g, Data.Functor.Alt.Alt h) => Data.Functor.Alt.Alt (Control.Monad.Product.Product g h)
instance (GHC.Base.Alternative g, GHC.Base.Alternative h) => GHC.Base.Alternative (Control.Monad.Product.Product g h)
instance (GHC.Base.MonadPlus g, GHC.Base.MonadPlus h) => GHC.Base.MonadPlus (Control.Monad.Product.Product g h)
