adjunctions 4.2.2 → 4.3
raw patch · 10 files changed
+67/−32 lines, 10 filesdep +transformers-compatdep ~comonaddep ~distributivedep ~transformersPVP ok
version bump matches the API change (PVP)
Dependencies added: transformers-compat
Dependency ranges changed: comonad, distributive, transformers
API changes (from Hackage documentation)
- Control.Comonad.Representable.Store: instance (Applicative w, Semigroup (Rep g), Monoid (Rep g), Representable g) => Applicative (StoreT g w)
- Control.Comonad.Representable.Store: instance (Apply w, Semigroup (Rep g), Representable g) => Apply (StoreT g w)
- Control.Comonad.Representable.Store: instance (Comonad w, Representable g) => Comonad (StoreT g w)
- Control.Comonad.Representable.Store: instance (Comonad w, Representable g, Rep g ~ s) => ComonadStore s (StoreT g w)
- Control.Comonad.Representable.Store: instance (ComonadApply w, Semigroup (Rep g), Representable g) => ComonadApply (StoreT g w)
- Control.Comonad.Representable.Store: instance (ComonadEnv m w, Representable g) => ComonadEnv m (StoreT g w)
- Control.Comonad.Representable.Store: instance (ComonadTraced m w, Representable g) => ComonadTraced m (StoreT g w)
- Control.Comonad.Representable.Store: instance (Extend w, Representable g) => Extend (StoreT g w)
- Control.Comonad.Representable.Store: instance (Functor w, Functor g) => Functor (StoreT g w)
- Control.Comonad.Representable.Store: instance (Representable g, ComonadCofree f w) => ComonadCofree f (StoreT g w)
- Control.Comonad.Representable.Store: instance ComonadHoist (StoreT g)
- Control.Comonad.Representable.Store: instance Representable g => ComonadTrans (StoreT g)
- Control.Comonad.Trans.Adjoint: instance (Adjunction f g, Comonad w) => Comonad (AdjointT f g w)
- Control.Comonad.Trans.Adjoint: instance (Adjunction f g, Distributive g) => ComonadTrans (AdjointT f g)
- Control.Comonad.Trans.Adjoint: instance (Adjunction f g, Extend w) => Extend (AdjointT f g w)
- Control.Comonad.Trans.Adjoint: instance (Adjunction f g, Functor w) => Functor (AdjointT f g w)
- Control.Comonad.Trans.Adjoint: runAdjointT :: AdjointT f g w a -> f (w (g a))
- Control.Monad.Representable.Reader: getReaderT :: ReaderT f m b -> f (m b)
- Control.Monad.Representable.Reader: instance (Foldable f, Foldable m) => Foldable (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Foldable1 f, Foldable1 m) => Foldable1 (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Functor f, Functor m) => Functor (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Applicative m) => Applicative (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Apply m) => Apply (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Bind m) => Bind (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Distributive m) => Distributive (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Monad m) => Monad (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, MonadIO m) => MonadIO (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, MonadWriter w m) => MonadWriter w (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Representable m) => Representable (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Representable m, Monoid (Rep f), Monoid (Rep m)) => Comonad (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Representable f, Representable m, Semigroup (Rep f), Semigroup (Rep m)) => Extend (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Traversable f, Traversable m) => Traversable (ReaderT f m)
- Control.Monad.Representable.Reader: instance (Traversable1 f, Traversable1 m) => Traversable1 (ReaderT f m)
- Control.Monad.Representable.Reader: instance Representable f => MonadTrans (ReaderT f)
- Control.Monad.Representable.State: getStateT :: StateT g m a -> g (m (a, Rep g))
- Control.Monad.Representable.State: instance (Functor f, Representable g, MonadFree f m) => MonadFree f (StateT g m)
- Control.Monad.Representable.State: instance (Functor g, Functor m) => Functor (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, Bind m) => Apply (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, Bind m) => Bind (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, Functor m, Monad m) => Applicative (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, Monad m) => Monad (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, Monad m, Rep g ~ s) => MonadState s (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, MonadCont m) => MonadCont (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, MonadReader e m) => MonadReader e (StateT g m)
- Control.Monad.Representable.State: instance (Representable g, MonadWriter w m) => MonadWriter w (StateT g m)
- Control.Monad.Representable.State: instance Representable f => BindTrans (StateT f)
- Control.Monad.Representable.State: instance Representable f => MonadTrans (StateT f)
- Control.Monad.Trans.Adjoint: instance (Adjunction f g, Monad m) => Applicative (AdjointT f g m)
- Control.Monad.Trans.Adjoint: instance (Adjunction f g, Monad m) => Functor (AdjointT f g m)
- Control.Monad.Trans.Adjoint: instance (Adjunction f g, Monad m) => Monad (AdjointT f g m)
- Control.Monad.Trans.Adjoint: instance (Adjunction f g, Traversable f) => MonadTrans (AdjointT f g)
- Control.Monad.Trans.Adjoint: runAdjointT :: AdjointT f g m a -> g (m (f a))
- Control.Monad.Trans.Contravariant.Adjoint: instance (Adjunction f g, Comonad w) => Applicative (AdjointT f g w)
- Control.Monad.Trans.Contravariant.Adjoint: instance (Adjunction f g, Comonad w) => Monad (AdjointT f g w)
- Control.Monad.Trans.Contravariant.Adjoint: instance (Adjunction f g, Functor w) => Functor (AdjointT f g w)
- Control.Monad.Trans.Contravariant.Adjoint: runAdjointT :: AdjointT f g w a -> g (w (f a))
- Control.Monad.Trans.Conts: instance Comonad w => Applicative (ContsT r w m)
- Control.Monad.Trans.Conts: instance Comonad w => Apply (ContsT r w m)
- Control.Monad.Trans.Conts: instance Comonad w => Monad (ContsT r w m)
- Control.Monad.Trans.Conts: instance Comonad w => MonadTrans (ContsT r w)
- Control.Monad.Trans.Conts: instance Functor w => Functor (ContsT r w m)
- Control.Monad.Trans.Conts: runContsT :: ContsT r w m a -> w (a -> m r) -> m r
- Data.Functor.Adjunction: instance (Adjunction f g, Adjunction f' g') => Adjunction (Compose f' f) (Compose g g')
- Data.Functor.Adjunction: instance (Adjunction f g, Adjunction f' g') => Adjunction (Coproduct f f') (Product g g')
- Data.Functor.Adjunction: instance Adjunction ((,) e) ((->) e)
- Data.Functor.Adjunction: instance Adjunction Identity Identity
- Data.Functor.Adjunction: instance Adjunction f g => Adjunction (IdentityT f) (IdentityT g)
- Data.Functor.Adjunction: instance Adjunction f u => Adjunction (Free f) (Cofree u)
- Data.Functor.Adjunction: instance Adjunction m w => Adjunction (WriterT s m) (TracedT s w)
- Data.Functor.Adjunction: instance Adjunction w m => Adjunction (EnvT e w) (ReaderT e m)
- Data.Functor.Contravariant.Adjunction: instance Adjunction (Op r) (Op r)
- Data.Functor.Contravariant.Adjunction: instance Adjunction Predicate Predicate
- Data.Functor.Contravariant.Rep: instance (Representable f, Representable g) => Representable (Product f g)
- Data.Functor.Contravariant.Rep: instance Representable (Op r)
- Data.Functor.Contravariant.Rep: instance Representable Predicate
- Data.Functor.Contravariant.Rep: instance Representable Proxy
- Data.Functor.Rep: instance (Representable f, Monoid (Rep f)) => Comonad (Co f)
- Data.Functor.Rep: instance (Representable f, Rep f ~ a) => MonadReader a (Co f)
- Data.Functor.Rep: instance (Representable f, Representable g) => Representable (Compose f g)
- Data.Functor.Rep: instance (Representable f, Representable g) => Representable (Product f g)
- Data.Functor.Rep: instance (Representable f, Semigroup (Rep f)) => Extend (Co f)
- Data.Functor.Rep: instance ComonadTrans Co
- Data.Functor.Rep: instance Functor f => Functor (Co f)
- Data.Functor.Rep: instance Representable ((->) e)
- Data.Functor.Rep: instance Representable (Tagged t)
- Data.Functor.Rep: instance Representable Identity
- Data.Functor.Rep: instance Representable Proxy
- Data.Functor.Rep: instance Representable f => Applicative (Co f)
- Data.Functor.Rep: instance Representable f => Apply (Co f)
- Data.Functor.Rep: instance Representable f => Bind (Co f)
- Data.Functor.Rep: instance Representable f => Distributive (Co f)
- Data.Functor.Rep: instance Representable f => Monad (Co f)
- Data.Functor.Rep: instance Representable f => Representable (Co f)
- Data.Functor.Rep: instance Representable f => Representable (Cofree f)
- Data.Functor.Rep: instance Representable m => Representable (IdentityT m)
- Data.Functor.Rep: instance Representable m => Representable (ReaderT e m)
- Data.Functor.Rep: instance Representable w => Representable (TracedT s w)
- Data.Functor.Rep: unCo :: Co f a -> f a
+ Control.Comonad.Representable.Store: instance (Control.Comonad.Comonad w, Data.Functor.Rep.Representable g) => Control.Comonad.Comonad (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Control.Comonad.Comonad w, Data.Functor.Rep.Representable g, Data.Functor.Rep.Rep g ~ s) => Control.Comonad.Store.Class.ComonadStore s (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Control.Comonad.ComonadApply w, Data.Semigroup.Semigroup (Data.Functor.Rep.Rep g), Data.Functor.Rep.Representable g) => Control.Comonad.ComonadApply (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Control.Comonad.Env.Class.ComonadEnv m w, Data.Functor.Rep.Representable g) => Control.Comonad.Env.Class.ComonadEnv m (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Control.Comonad.Traced.Class.ComonadTraced m w, Data.Functor.Rep.Representable g) => Control.Comonad.Traced.Class.ComonadTraced m (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Data.Functor.Bind.Class.Apply w, Data.Semigroup.Semigroup (Data.Functor.Rep.Rep g), Data.Functor.Rep.Representable g) => Data.Functor.Bind.Class.Apply (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Data.Functor.Extend.Extend w, Data.Functor.Rep.Representable g) => Data.Functor.Extend.Extend (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (Data.Functor.Rep.Representable g, Control.Comonad.Cofree.Class.ComonadCofree f w) => Control.Comonad.Cofree.Class.ComonadCofree f (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (GHC.Base.Applicative w, GHC.Base.Monoid (Data.Functor.Rep.Rep g), Data.Functor.Rep.Representable g) => GHC.Base.Applicative (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance (GHC.Base.Functor w, GHC.Base.Functor g) => GHC.Base.Functor (Control.Comonad.Representable.Store.StoreT g w)
+ Control.Comonad.Representable.Store: instance Control.Comonad.Hoist.Class.ComonadHoist (Control.Comonad.Representable.Store.StoreT g)
+ Control.Comonad.Representable.Store: instance Data.Functor.Rep.Representable g => Control.Comonad.Trans.Class.ComonadTrans (Control.Comonad.Representable.Store.StoreT g)
+ Control.Comonad.Trans.Adjoint: [runAdjointT] :: AdjointT f g w a -> f (w (g a))
+ Control.Comonad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, Control.Comonad.Comonad w) => Control.Comonad.Comonad (Control.Comonad.Trans.Adjoint.AdjointT f g w)
+ Control.Comonad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, Data.Distributive.Distributive g) => Control.Comonad.Trans.Class.ComonadTrans (Control.Comonad.Trans.Adjoint.AdjointT f g)
+ Control.Comonad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, Data.Functor.Extend.Extend w) => Data.Functor.Extend.Extend (Control.Comonad.Trans.Adjoint.AdjointT f g w)
+ Control.Comonad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, GHC.Base.Functor w) => GHC.Base.Functor (Control.Comonad.Trans.Adjoint.AdjointT f g w)
+ Control.Monad.Representable.Reader: [getReaderT] :: ReaderT f m b -> f (m b)
+ Control.Monad.Representable.Reader: instance (Data.Foldable.Foldable f, Data.Foldable.Foldable m) => Data.Foldable.Foldable (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Control.Monad.IO.Class.MonadIO m) => Control.Monad.IO.Class.MonadIO (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Control.Monad.Writer.Class.MonadWriter w m) => Control.Monad.Writer.Class.MonadWriter w (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Data.Distributive.Distributive m) => Data.Distributive.Distributive (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Data.Functor.Bind.Class.Apply m) => Data.Functor.Bind.Class.Apply (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Data.Functor.Bind.Class.Bind m) => Data.Functor.Bind.Class.Bind (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Data.Functor.Rep.Representable m) => Data.Functor.Rep.Representable (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Data.Functor.Rep.Representable m, Data.Semigroup.Semigroup (Data.Functor.Rep.Rep f), Data.Semigroup.Semigroup (Data.Functor.Rep.Rep m)) => Data.Functor.Extend.Extend (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, Data.Functor.Rep.Representable m, GHC.Base.Monoid (Data.Functor.Rep.Rep f), GHC.Base.Monoid (Data.Functor.Rep.Rep m)) => Control.Comonad.Comonad (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, GHC.Base.Applicative m) => GHC.Base.Applicative (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Functor.Rep.Representable f, GHC.Base.Monad m) => GHC.Base.Monad (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Semigroup.Foldable.Class.Foldable1 f, Data.Semigroup.Foldable.Class.Foldable1 m) => Data.Semigroup.Foldable.Class.Foldable1 (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Semigroup.Traversable.Class.Traversable1 f, Data.Semigroup.Traversable.Class.Traversable1 m) => Data.Semigroup.Traversable.Class.Traversable1 (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (Data.Traversable.Traversable f, Data.Traversable.Traversable m) => Data.Traversable.Traversable (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance (GHC.Base.Functor f, GHC.Base.Functor m) => GHC.Base.Functor (Control.Monad.Representable.Reader.ReaderT f m)
+ Control.Monad.Representable.Reader: instance Data.Functor.Rep.Representable f => Control.Monad.Trans.Class.MonadTrans (Control.Monad.Representable.Reader.ReaderT f)
+ Control.Monad.Representable.State: [getStateT] :: StateT g m a -> g (m (a, Rep g))
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, Control.Monad.Cont.Class.MonadCont m) => Control.Monad.Cont.Class.MonadCont (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, Control.Monad.Reader.Class.MonadReader e m) => Control.Monad.Reader.Class.MonadReader e (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, Control.Monad.Writer.Class.MonadWriter w m) => Control.Monad.Writer.Class.MonadWriter w (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, Data.Functor.Bind.Class.Bind m) => Data.Functor.Bind.Class.Apply (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, Data.Functor.Bind.Class.Bind m) => Data.Functor.Bind.Class.Bind (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, GHC.Base.Functor m, GHC.Base.Monad m) => GHC.Base.Applicative (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, GHC.Base.Monad m) => GHC.Base.Monad (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (Data.Functor.Rep.Representable g, GHC.Base.Monad m, Data.Functor.Rep.Rep g ~ s) => Control.Monad.State.Class.MonadState s (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (GHC.Base.Functor f, Data.Functor.Rep.Representable g, Control.Monad.Free.Class.MonadFree f m) => Control.Monad.Free.Class.MonadFree f (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance (GHC.Base.Functor g, GHC.Base.Functor m) => GHC.Base.Functor (Control.Monad.Representable.State.StateT g m)
+ Control.Monad.Representable.State: instance Data.Functor.Rep.Representable f => Control.Monad.Trans.Class.MonadTrans (Control.Monad.Representable.State.StateT f)
+ Control.Monad.Representable.State: instance Data.Functor.Rep.Representable f => Data.Functor.Bind.Trans.BindTrans (Control.Monad.Representable.State.StateT f)
+ Control.Monad.Trans.Adjoint: [runAdjointT] :: AdjointT f g m a -> g (m (f a))
+ Control.Monad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, Data.Traversable.Traversable f) => Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Adjoint.AdjointT f g)
+ Control.Monad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, GHC.Base.Monad m) => GHC.Base.Applicative (Control.Monad.Trans.Adjoint.AdjointT f g m)
+ Control.Monad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, GHC.Base.Monad m) => GHC.Base.Functor (Control.Monad.Trans.Adjoint.AdjointT f g m)
+ Control.Monad.Trans.Adjoint: instance (Data.Functor.Adjunction.Adjunction f g, GHC.Base.Monad m) => GHC.Base.Monad (Control.Monad.Trans.Adjoint.AdjointT f g m)
+ Control.Monad.Trans.Contravariant.Adjoint: [runAdjointT] :: AdjointT f g w a -> g (w (f a))
+ Control.Monad.Trans.Contravariant.Adjoint: instance (Data.Functor.Contravariant.Adjunction.Adjunction f g, Control.Comonad.Comonad w) => GHC.Base.Applicative (Control.Monad.Trans.Contravariant.Adjoint.AdjointT f g w)
+ Control.Monad.Trans.Contravariant.Adjoint: instance (Data.Functor.Contravariant.Adjunction.Adjunction f g, Control.Comonad.Comonad w) => GHC.Base.Monad (Control.Monad.Trans.Contravariant.Adjoint.AdjointT f g w)
+ Control.Monad.Trans.Contravariant.Adjoint: instance (Data.Functor.Contravariant.Adjunction.Adjunction f g, GHC.Base.Functor w) => GHC.Base.Functor (Control.Monad.Trans.Contravariant.Adjoint.AdjointT f g w)
+ Control.Monad.Trans.Conts: [runContsT] :: ContsT r w m a -> w (a -> m r) -> m r
+ Control.Monad.Trans.Conts: instance Control.Comonad.Comonad w => Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Conts.ContsT r w)
+ Control.Monad.Trans.Conts: instance Control.Comonad.Comonad w => Data.Functor.Bind.Class.Apply (Control.Monad.Trans.Conts.ContsT r w m)
+ Control.Monad.Trans.Conts: instance Control.Comonad.Comonad w => GHC.Base.Applicative (Control.Monad.Trans.Conts.ContsT r w m)
+ Control.Monad.Trans.Conts: instance Control.Comonad.Comonad w => GHC.Base.Monad (Control.Monad.Trans.Conts.ContsT r w m)
+ Control.Monad.Trans.Conts: instance GHC.Base.Functor w => GHC.Base.Functor (Control.Monad.Trans.Conts.ContsT r w m)
+ Data.Functor.Adjunction: instance (Data.Functor.Adjunction.Adjunction f g, Data.Functor.Adjunction.Adjunction f' g') => Data.Functor.Adjunction.Adjunction (Data.Functor.Compose.Compose f' f) (Data.Functor.Compose.Compose g g')
+ Data.Functor.Adjunction: instance (Data.Functor.Adjunction.Adjunction f g, Data.Functor.Adjunction.Adjunction f' g') => Data.Functor.Adjunction.Adjunction (Data.Functor.Sum.Sum f f') (Data.Functor.Product.Product g g')
+ Data.Functor.Adjunction: instance Data.Functor.Adjunction.Adjunction ((,) e) ((->) e)
+ Data.Functor.Adjunction: instance Data.Functor.Adjunction.Adjunction Data.Functor.Identity.Identity Data.Functor.Identity.Identity
+ Data.Functor.Adjunction: instance Data.Functor.Adjunction.Adjunction f g => Data.Functor.Adjunction.Adjunction (Control.Monad.Trans.Identity.IdentityT f) (Control.Monad.Trans.Identity.IdentityT g)
+ Data.Functor.Adjunction: instance Data.Functor.Adjunction.Adjunction f u => Data.Functor.Adjunction.Adjunction (Control.Monad.Free.Free f) (Control.Comonad.Cofree.Cofree u)
+ Data.Functor.Adjunction: instance Data.Functor.Adjunction.Adjunction m w => Data.Functor.Adjunction.Adjunction (Control.Monad.Trans.Writer.Lazy.WriterT s m) (Control.Comonad.Trans.Traced.TracedT s w)
+ Data.Functor.Adjunction: instance Data.Functor.Adjunction.Adjunction w m => Data.Functor.Adjunction.Adjunction (Control.Comonad.Trans.Env.EnvT e w) (Control.Monad.Trans.Reader.ReaderT e m)
+ Data.Functor.Contravariant.Adjunction: instance Data.Functor.Contravariant.Adjunction.Adjunction (Data.Functor.Contravariant.Op r) (Data.Functor.Contravariant.Op r)
+ Data.Functor.Contravariant.Adjunction: instance Data.Functor.Contravariant.Adjunction.Adjunction Data.Functor.Contravariant.Predicate Data.Functor.Contravariant.Predicate
+ Data.Functor.Contravariant.Rep: instance (Data.Functor.Contravariant.Rep.Representable f, Data.Functor.Contravariant.Rep.Representable g) => Data.Functor.Contravariant.Rep.Representable (Data.Functor.Product.Product f g)
+ Data.Functor.Contravariant.Rep: instance Data.Functor.Contravariant.Rep.Representable (Data.Functor.Contravariant.Op r)
+ Data.Functor.Contravariant.Rep: instance Data.Functor.Contravariant.Rep.Representable Data.Functor.Contravariant.Predicate
+ Data.Functor.Contravariant.Rep: instance Data.Functor.Contravariant.Rep.Representable Data.Proxy.Proxy
+ Data.Functor.Rep: [unCo] :: Co f a -> f a
+ Data.Functor.Rep: instance (Data.Functor.Rep.Representable f, Data.Functor.Rep.Rep f ~ a) => Control.Monad.Reader.Class.MonadReader a (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance (Data.Functor.Rep.Representable f, Data.Functor.Rep.Representable g) => Data.Functor.Rep.Representable (Data.Functor.Compose.Compose f g)
+ Data.Functor.Rep: instance (Data.Functor.Rep.Representable f, Data.Functor.Rep.Representable g) => Data.Functor.Rep.Representable (Data.Functor.Product.Product f g)
+ Data.Functor.Rep: instance (Data.Functor.Rep.Representable f, Data.Semigroup.Semigroup (Data.Functor.Rep.Rep f)) => Data.Functor.Extend.Extend (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance (Data.Functor.Rep.Representable f, GHC.Base.Monoid (Data.Functor.Rep.Rep f)) => Control.Comonad.Comonad (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Control.Comonad.Trans.Class.ComonadTrans Data.Functor.Rep.Co
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable ((->) e)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable (Data.Tagged.Tagged t)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable Data.Complex.Complex
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable Data.Functor.Identity.Identity
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable Data.Monoid.Dual
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable Data.Monoid.Product
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable Data.Monoid.Sum
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable Data.Proxy.Proxy
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => Data.Distributive.Distributive (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => Data.Functor.Bind.Class.Apply (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => Data.Functor.Bind.Class.Bind (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => Data.Functor.Rep.Representable (Control.Comonad.Cofree.Cofree f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => Data.Functor.Rep.Representable (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => GHC.Base.Applicative (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable f => GHC.Base.Monad (Data.Functor.Rep.Co f)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable m => Data.Functor.Rep.Representable (Control.Monad.Trans.Identity.IdentityT m)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable m => Data.Functor.Rep.Representable (Control.Monad.Trans.Reader.ReaderT e m)
+ Data.Functor.Rep: instance Data.Functor.Rep.Representable w => Data.Functor.Rep.Representable (Control.Comonad.Trans.Traced.TracedT s w)
+ Data.Functor.Rep: instance GHC.Base.Functor f => GHC.Base.Functor (Data.Functor.Rep.Co f)
Files
- .travis.yml +4/−4
- CHANGELOG.markdown +6/−0
- adjunctions.cabal +16/−15
- src/Control/Comonad/Representable/Store.hs +1/−1
- src/Control/Monad/Representable/Reader.hs +2/−0
- src/Control/Monad/Representable/State.hs +2/−0
- src/Control/Monad/Trans/Adjoint.hs +1/−1
- src/Control/Monad/Trans/Contravariant/Adjoint.hs +1/−1
- src/Data/Functor/Adjunction.hs +6/−8
- src/Data/Functor/Rep.hs +28/−2
.travis.yml view
@@ -13,12 +13,12 @@ matrix: include:- - env: CABALVER=1.16 GHCVER=7.4.2+ - env: CABALVER=1.24 GHCVER=7.4.2 compiler: ": #GHC 7.4.2"- addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.16 GHCVER=7.6.3+ addons: {apt: {packages: [cabal-install-1.24,ghc-7.4.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=1.24 GHCVER=7.6.3 compiler: ": #GHC 7.6.3"- addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ addons: {apt: {packages: [cabal-install-1.24,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}} - env: CABALVER=1.18 GHCVER=7.8.4 compiler: ": #GHC 7.8.4" addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
CHANGELOG.markdown view
@@ -1,3 +1,9 @@+4.3+---+* Removed a spurious superclass constraint for `Applicative (StoreT g w)`+* GHC 8 support+* `comonad` 5 support+ 4.2.2 ----- * Builds clean on GHC 7.10
adjunctions.cabal view
@@ -1,6 +1,6 @@ name: adjunctions category: Data Structures, Adjunctions-version: 4.2.2+version: 4.3 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -40,20 +40,21 @@ UndecidableInstances build-depends:- array >= 0.3.0.2 && < 0.7,- base >= 4 && < 5,- comonad >= 4 && < 5,- containers >= 0.3 && < 0.6,- contravariant >= 1 && < 2,- distributive >= 0.4 && < 1,- free >= 4 && < 5,- mtl >= 2.0.1 && < 2.3,- profunctors >= 4 && < 6,- tagged >= 0.7 && < 1,- semigroupoids >= 4 && < 6,- semigroups >= 0.11 && < 1,- transformers >= 0.2 && < 0.5,- void >= 0.5.5.1 && < 1+ array >= 0.3.0.2 && < 0.7,+ base >= 4 && < 5,+ comonad >= 4 && < 6,+ containers >= 0.3 && < 0.6,+ contravariant >= 1 && < 2,+ distributive >= 0.4 && < 1,+ free >= 4 && < 5,+ mtl >= 2.0.1 && < 2.3,+ profunctors >= 4 && < 6,+ tagged >= 0.7 && < 1,+ semigroupoids >= 4 && < 6,+ semigroups >= 0.11 && < 1,+ transformers >= 0.2 && < 0.6,+ transformers-compat >= 0.3 && < 1,+ void >= 0.5.5.1 && < 1 exposed-modules: Control.Comonad.Representable.Store
src/Control/Comonad/Representable/Store.hs view
@@ -95,7 +95,7 @@ instance (ComonadApply w, Semigroup (Rep g), Representable g) => ComonadApply (StoreT g w) where StoreT ff m <@> StoreT fa n = StoreT (apRep <$> ff <@> fa) (m <> n) -instance (Applicative w, Semigroup (Rep g), Monoid (Rep g), Representable g) => Applicative (StoreT g w) where+instance (Applicative w, Monoid (Rep g), Representable g) => Applicative (StoreT g w) where pure a = StoreT (pure (pureRep a)) mempty StoreT ff m <*> StoreT fa n = StoreT (apRep <$> ff <*> fa) (m `mappend` n)
src/Control/Monad/Representable/Reader.hs view
@@ -77,7 +77,9 @@ ReaderT fm >>- f = ReaderT $ tabulate (\a -> index fm a >>- flip index a . getReaderT . f) instance (Representable f, Monad m) => Monad (ReaderT f m) where+#if __GLASGOW_HASKELL__ < 710 return = ReaderT . pureRep . return+#endif ReaderT fm >>= f = ReaderT $ tabulate (\a -> index fm a >>= flip index a . getReaderT . f) #if __GLASGOW_HASKELL >= 704
src/Control/Monad/Representable/State.hs view
@@ -147,7 +147,9 @@ StateT m >>- f = StateT $ fmap (>>- rightAdjunctRep (runStateT . f)) m instance (Representable g, Monad m) => Monad (StateT g m) where+#if __GLASGOW_VERSION__ < 710 return = StateT . leftAdjunctRep return+#endif StateT m >>= f = StateT $ fmap (>>= rightAdjunctRep (runStateT . f)) m instance Representable f => BindTrans (StateT f) where
src/Control/Monad/Trans/Adjoint.hs view
@@ -50,7 +50,7 @@ (<*>) = ap instance (Adjunction f g, Monad m) => Monad (AdjointT f g m) where- return = AdjointT . leftAdjunct return+ return = pure AdjointT m >>= f = AdjointT $ fmap (>>= rightAdjunct (runAdjointT . f)) m -- | Exploiting this instance requires that we have the missing Traversables for Identity, (,)e and IdentityT
src/Control/Monad/Trans/Contravariant/Adjoint.hs view
@@ -62,5 +62,5 @@ (<*>) = ap instance (Adjunction f g, Comonad w) => Monad (AdjointT f g w) where- return = AdjointT . leftAdjunct extract+ return = pure AdjointT m >>= f = AdjointT $ contramap (extend (rightAdjunct (runAdjointT . f))) m
src/Data/Functor/Adjunction.hs view
@@ -48,10 +48,10 @@ import Control.Comonad.Trans.Traced import Data.Functor.Identity-import Data.Functor.Coproduct import Data.Functor.Compose import Data.Functor.Product import Data.Functor.Rep+import Data.Functor.Sum import Data.Profunctor import Data.Void @@ -89,7 +89,7 @@ -- This can be used with the combinators from the @lens@ package. -- -- @'adjuncted' :: 'Adjunction' f u => 'Iso'' (f a -> b) (a -> u b)@-adjuncted :: (Adjunction f u, Profunctor p, Functor g) +adjuncted :: (Adjunction f u, Profunctor p, Functor g) => p (a -> u b) (g (c -> u d)) -> p (f a -> b) (g (f c -> d)) adjuncted = dimap leftAdjunct (fmap rightAdjunct) {-# INLINE adjuncted #-}@@ -181,12 +181,10 @@ counit = rightAdjunct (rightAdjunct getCompose) . getCompose instance (Adjunction f g, Adjunction f' g') =>- Adjunction (Coproduct f f') (Product g g') where- unit a = Pair (leftAdjunct left a) (leftAdjunct right a)- counit = coproduct (rightAdjunct fstP) (rightAdjunct sndP)- where- fstP (Pair x _) = x- sndP (Pair _ x) = x+ Adjunction (Sum f f') (Product g g') where+ unit a = Pair (leftAdjunct InL a) (leftAdjunct InR a)+ counit (InL l) = rightAdjunct (\(Pair x _) -> x) l+ counit (InR r) = rightAdjunct (\(Pair _ x) -> x) r instance Adjunction f u => Adjunction (Free f) (Cofree u) where
src/Data/Functor/Rep.hs view
@@ -67,12 +67,16 @@ import Control.Comonad.Cofree import Control.Monad.Trans.Identity import Control.Monad.Reader+#if MIN_VERSION_base(4,4,0)+import Data.Complex+#endif import Data.Distributive import Data.Functor.Bind import Data.Functor.Identity import Data.Functor.Compose import Data.Functor.Extend import Data.Functor.Product+import qualified Data.Monoid as Monoid import Data.Profunctor import Data.Proxy import Data.Sequence (Seq)@@ -111,7 +115,7 @@ -- This can be used with the combinators from the @lens@ package. -- -- @'tabulated' :: 'Representable' f => 'Iso'' ('Rep' f -> a) (f a)@-tabulated :: (Representable f, Representable g, Profunctor p, Functor h) +tabulated :: (Representable f, Representable g, Profunctor p, Functor h) => p (f a) (h (g b)) -> p (Rep f -> a) (h (Rep g -> b)) tabulated = dimap tabulate (fmap index) {-# INLINE tabulated #-}@@ -227,6 +231,28 @@ k Seq.:< ks -> index (index as k) ks tabulate f = f Seq.empty :< tabulate (\k -> tabulate (f . (k Seq.<|))) +instance Representable Monoid.Dual where+ type Rep Monoid.Dual = ()+ index (Monoid.Dual d) () = d+ tabulate f = Monoid.Dual (f ())++instance Representable Monoid.Product where+ type Rep Monoid.Product = ()+ index (Monoid.Product p) () = p+ tabulate f = Monoid.Product (f ())++instance Representable Monoid.Sum where+ type Rep Monoid.Sum = ()+ index (Monoid.Sum s) () = s+ tabulate f = Monoid.Sum (f ())++#if MIN_VERSION_base(4,4,0)+instance Representable Complex where+ type Rep Complex = Bool+ index (r :+ i) key = if key then i else r+ tabulate f = f False :+ f True+#endif+ newtype Co f a = Co { unCo :: f a } deriving Functor instance Representable f => Representable (Co f) where@@ -248,7 +274,7 @@ (>>-) = bindRep instance Representable f => Monad (Co f) where- return = pureRep+ return = pure (>>=) = bindRep #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 704