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


-- | Pointed and copointed data
--   
--   Pointed and copointed data
@package pointed
@version 5

module Data.Copointed

-- | <a>Copointed</a> does not require a <a>Functor</a>, as the only
--   relationship between <a>copoint</a> and <a>fmap</a> is given by a free
--   theorem.
class Copointed p
copoint :: Copointed p => p a -> a
instance Data.Copointed.Copointed ((,) a)
instance Data.Copointed.Copointed ((,,) a b)
instance Data.Copointed.Copointed ((,,,) a b c)
instance Data.Default.Class.Default m => Data.Copointed.Copointed ((->) m)
instance Data.Copointed.Copointed m => Data.Copointed.Copointed (Control.Applicative.WrappedMonad m)
instance (Data.Default.Class.Default m, Data.Copointed.Copointed w) => Data.Copointed.Copointed (Control.Comonad.Trans.Traced.TracedT m w)
instance Data.Copointed.Copointed w => Data.Copointed.Copointed (Control.Comonad.Trans.Env.EnvT e w)
instance Data.Copointed.Copointed w => Data.Copointed.Copointed (Control.Comonad.Trans.Store.StoreT s w)
instance Data.Copointed.Copointed Data.Tree.Tree
instance Data.Copointed.Copointed (Data.Tagged.Tagged a)
instance Data.Copointed.Copointed Data.Functor.Identity.Identity
instance (Data.Copointed.Copointed p, Data.Copointed.Copointed q) => Data.Copointed.Copointed (Data.Functor.Compose.Compose p q)
instance (Data.Copointed.Copointed f, Data.Copointed.Copointed g) => Data.Copointed.Copointed (Data.Functor.Sum.Sum f g)
instance Data.Copointed.Copointed f => Data.Copointed.Copointed (Control.Applicative.Backwards.Backwards f)
instance Data.Copointed.Copointed f => Data.Copointed.Copointed (Control.Applicative.Lift.Lift f)
instance Data.Copointed.Copointed f => Data.Copointed.Copointed (Data.Functor.Reverse.Reverse f)
instance Data.Copointed.Copointed m => Data.Copointed.Copointed (Control.Monad.Trans.Identity.IdentityT m)
instance Data.Copointed.Copointed m => Data.Copointed.Copointed (Control.Monad.Trans.Writer.Lazy.WriterT w m)
instance Data.Copointed.Copointed m => Data.Copointed.Copointed (Control.Monad.Trans.Writer.Strict.WriterT w m)
instance Data.Copointed.Copointed Data.Monoid.Dual
instance Data.Copointed.Copointed Data.Monoid.Sum
instance Data.Copointed.Copointed Data.List.NonEmpty.NonEmpty
instance Data.Copointed.Copointed Data.Semigroup.First
instance Data.Copointed.Copointed Data.Semigroup.Last
instance Data.Copointed.Copointed Data.Semigroup.Max
instance Data.Copointed.Copointed Data.Semigroup.Min
instance Data.Copointed.Copointed Data.Semigroup.WrappedMonoid
instance Data.Copointed.Copointed (Data.Semigroup.Arg a)
instance Data.Copointed.Copointed f => Data.Copointed.Copointed (Data.Functor.Bind.Class.WrappedApplicative f)
instance Data.Copointed.Copointed f => Data.Copointed.Copointed (Data.Functor.Bind.Class.MaybeApply f)

module Data.Pointed
class Pointed p
point :: Pointed p => a -> p a
instance Data.Pointed.Pointed []
instance Data.Pointed.Pointed GHC.Base.Maybe
instance Data.Pointed.Pointed (Data.Either.Either a)
instance Data.Pointed.Pointed GHC.Types.IO
instance Data.Pointed.Pointed Control.Applicative.ZipList
instance Data.Pointed.Pointed Data.Functor.Identity.Identity
instance Data.Pointed.Pointed ((->) e)
instance Data.Default.Class.Default e => Data.Pointed.Pointed ((,) e)
instance Data.Default.Class.Default m => Data.Pointed.Pointed (Data.Functor.Const.Const m)
instance GHC.Base.Monad m => Data.Pointed.Pointed (Control.Applicative.WrappedMonad m)
instance Control.Arrow.Arrow a => Data.Pointed.Pointed (Control.Applicative.WrappedArrow a b)
instance Data.Pointed.Pointed Data.Monoid.Dual
instance Data.Pointed.Pointed Data.Monoid.Endo
instance Data.Pointed.Pointed Data.Monoid.Sum
instance Data.Pointed.Pointed Data.Monoid.Product
instance Data.Pointed.Pointed Data.Monoid.First
instance Data.Pointed.Pointed Data.Monoid.Last
instance Data.Pointed.Pointed (Control.Comonad.Cokleisli w a)
instance Data.Pointed.Pointed Data.Tree.Tree
instance Data.Default.Class.Default k => Data.Pointed.Pointed (Data.Map.Base.Map k)
instance Data.Pointed.Pointed Data.Sequence.Seq
instance Data.Pointed.Pointed Data.Sequence.ViewL
instance Data.Pointed.Pointed Data.Sequence.ViewR
instance Data.Pointed.Pointed Data.Set.Base.Set
instance (GHC.Base.Functor g, g ~ h) => Data.Pointed.Pointed (Data.Functor.Day.Curried.Curried g h)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Data.Semigroupoid.Static.Static m a)
instance Data.Pointed.Pointed f => Data.Pointed.Pointed (Data.Functor.Bind.Class.WrappedApplicative f)
instance Data.Pointed.Pointed (Data.Functor.Bind.Class.MaybeApply f)
instance Data.Pointed.Pointed Data.List.NonEmpty.NonEmpty
instance Data.Pointed.Pointed Data.Semigroup.First
instance Data.Pointed.Pointed Data.Semigroup.Last
instance Data.Pointed.Pointed Data.Semigroup.Max
instance Data.Pointed.Pointed Data.Semigroup.Min
instance Data.Pointed.Pointed Data.Semigroup.Option
instance Data.Pointed.Pointed Data.Semigroup.WrappedMonoid
instance Data.Default.Class.Default a => Data.Pointed.Pointed (Data.Semigroup.Arg a)
instance Data.Pointed.Pointed GHC.Conc.Sync.STM
instance Data.Pointed.Pointed Data.Proxy.Proxy
instance Data.Pointed.Pointed (Data.Tagged.Tagged a)
instance (Data.Pointed.Pointed p, Data.Pointed.Pointed q) => Data.Pointed.Pointed (Data.Functor.Compose.Compose p q)
instance (Data.Pointed.Pointed p, Data.Pointed.Pointed q) => Data.Pointed.Pointed (Data.Functor.Product.Product p q)
instance Data.Pointed.Pointed (Control.Monad.Trans.Cont.ContT r m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.Error.ErrorT e m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.Except.ExceptT e m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.Identity.IdentityT m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.List.ListT m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.Maybe.MaybeT m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.Reader.ReaderT r m)
instance Data.Default.Class.Default m => Data.Pointed.Pointed (Data.Functor.Constant.Constant m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.State.Lazy.StateT s m)
instance Data.Pointed.Pointed m => Data.Pointed.Pointed (Control.Monad.Trans.State.Strict.StateT s m)
instance (Data.Default.Class.Default w, Data.Pointed.Pointed m) => Data.Pointed.Pointed (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
instance (Data.Default.Class.Default w, Data.Pointed.Pointed m) => Data.Pointed.Pointed (Control.Monad.Trans.RWS.Strict.RWST r w s m)
instance (Data.Default.Class.Default w, Data.Pointed.Pointed m) => Data.Pointed.Pointed (Control.Monad.Trans.Writer.Lazy.WriterT w m)
instance (Data.Default.Class.Default w, Data.Pointed.Pointed m) => Data.Pointed.Pointed (Control.Monad.Trans.Writer.Strict.WriterT w m)
instance Data.Pointed.Pointed f => Data.Pointed.Pointed (Data.Functor.Reverse.Reverse f)
instance Data.Pointed.Pointed f => Data.Pointed.Pointed (Control.Applicative.Backwards.Backwards f)
instance Data.Pointed.Pointed (Control.Applicative.Lift.Lift f)
instance (Data.Default.Class.Default k, Data.Hashable.Class.Hashable k) => Data.Pointed.Pointed (Data.HashMap.Base.HashMap k)
