comonad-transformers 2.1.2 → 3.0
raw patch · 7 files changed
+40/−19 lines, 7 filesdep ~basedep ~comonaddep ~semigroupoidsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, comonad, semigroupoids
API changes (from Hackage documentation)
- Control.Comonad.Trans.Store: instance (Applicative w, Semigroup s, Monoid s) => Applicative (StoreT s w)
- Control.Comonad.Trans.Traced: instance (Comonad w, Semigroup m, Monoid m) => Comonad (TracedT m w)
- Control.Comonad.Trans.Traced: instance (Semigroup m, Monoid m) => ComonadHoist (TracedT m)
- Control.Comonad.Trans.Traced: instance (Semigroup m, Monoid m) => ComonadTrans (TracedT m)
+ Control.Comonad.Trans.Env: instance (Semigroup e, ComonadApply w) => ComonadApply (EnvT e w)
+ Control.Comonad.Trans.Store: instance (Applicative w, Monoid s) => Applicative (StoreT s w)
+ Control.Comonad.Trans.Store: instance (ComonadApply w, Semigroup s) => ComonadApply (StoreT s w)
+ Control.Comonad.Trans.Traced: instance (Comonad w, Monoid m) => Comonad (TracedT m w)
+ Control.Comonad.Trans.Traced: instance (ComonadApply w, Monoid m) => ComonadApply (TracedT m w)
+ Control.Comonad.Trans.Traced: instance Monoid m => ComonadHoist (TracedT m)
+ Control.Comonad.Trans.Traced: instance Monoid m => ComonadTrans (TracedT m)
- Control.Comonad.Trans.Class: lower :: (ComonadTrans t, Extend w) => t w a -> w a
+ Control.Comonad.Trans.Class: lower :: (ComonadTrans t, Comonad w) => t w a -> w a
- Control.Comonad.Trans.Traced: trace :: (Comonad w, Monoid m) => m -> TracedT m w a -> a
+ Control.Comonad.Trans.Traced: trace :: Comonad w => m -> TracedT m w a -> a
Files
- Control/Comonad/Trans/Class.hs +2/−2
- Control/Comonad/Trans/Env.hs +8/−2
- Control/Comonad/Trans/Identity.hs +1/−1
- Control/Comonad/Trans/Store.hs +10/−4
- Control/Comonad/Trans/Traced.hs +10/−5
- Data/Functor/Coproduct.hs +6/−2
- comonad-transformers.cabal +3/−3
Control/Comonad/Trans/Class.hs view
@@ -8,14 +8,14 @@ -- Stability : provisional -- Portability : portable -----------------------------------------------------------------------------module Control.Comonad.Trans.Class +module Control.Comonad.Trans.Class ( ComonadTrans(..) ) where import Control.Comonad import Control.Monad.Trans.Identity class ComonadTrans t where- lower :: Extend w => t w a -> w a + lower :: Comonad w => t w a -> w a -- avoiding orphans instance ComonadTrans IdentityT where
Control/Comonad/Trans/Env.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE CPP, FlexibleContexts #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-} ----------------------------------------------------------------------------- -- | -- Module : Control.Comonad.Trans.Env@@ -37,6 +38,7 @@ import Data.Traversable import Data.Functor.Apply import Data.Functor.Identity+import Data.Functor.Extend import Data.Semigroup #ifdef __GLASGOW_HASKELL__@@ -100,9 +102,10 @@ fmap g (EnvT e wa) = EnvT e (fmap g wa) instance Extend w => Extend (EnvT e w) where- duplicate (EnvT e wa) = EnvT e (extend (EnvT e) wa)+ duplicated (EnvT e wa) = EnvT e (extended (EnvT e) wa) instance Comonad w => Comonad (EnvT e w) where+ duplicate (EnvT e wa) = EnvT e (extend (EnvT e) wa) extract (EnvT _ wa) = extract wa instance ComonadTrans (EnvT e) where@@ -116,6 +119,9 @@ instance (Semigroup e, Apply w) => Apply (EnvT e w) where EnvT ef wf <.> EnvT ea wa = EnvT (ef <> ea) (wf <.> wa)++instance (Semigroup e, ComonadApply w) => ComonadApply (EnvT e w) where+ EnvT ef wf <@> EnvT ea wa = EnvT (ef <> ea) (wf <@> wa) instance Foldable w => Foldable (EnvT e w) where foldMap f (EnvT _ w) = foldMap f w
Control/Comonad/Trans/Identity.hs view
@@ -7,7 +7,7 @@ -- Maintainer : Edward Kmett <ekmett@gmail.com> -- Stability : provisional -- Portability : portable--- +-- ---------------------------------------------------------------------------- module Control.Comonad.Trans.Identity ( IdentityT(..)
Control/Comonad/Trans/Store.hs view
@@ -37,6 +37,7 @@ import Control.Comonad.Trans.Class import Data.Functor.Identity import Data.Functor.Apply+import Data.Functor.Extend import Data.Semigroup #ifdef __GLASGOW_HASKELL__@@ -83,15 +84,20 @@ instance (Apply w, Semigroup s) => Apply (StoreT s w) where StoreT ff m <.> StoreT fa n = StoreT ((<*>) <$> ff <.> fa) (m <> n) -instance (Applicative w, Semigroup s, Monoid s) => Applicative (StoreT s w) where+instance (ComonadApply w, Semigroup s) => ComonadApply (StoreT s w) where+ StoreT ff m <@> StoreT fa n = StoreT ((<*>) <$> ff <@> fa) (m <> n)++instance (Applicative w, Monoid s) => Applicative (StoreT s w) where pure a = StoreT (pure (const a)) mempty- StoreT ff m <*> StoreT fa n = StoreT ((<*>) <$> ff <*> fa) (m `mappend` n)+ StoreT ff m <*> StoreT fa n = StoreT ((<*>) <$> ff <*> fa) (mappend m n) instance Extend w => Extend (StoreT s w) where- duplicate (StoreT wf s) = StoreT (extend StoreT wf) s- extend f (StoreT wf s) = StoreT (extend (\wf' s' -> f (StoreT wf' s')) wf) s+ duplicated (StoreT wf s) = StoreT (extended StoreT wf) s+ extended f (StoreT wf s) = StoreT (extended (\wf' s' -> f (StoreT wf' s')) wf) s instance Comonad w => Comonad (StoreT s w) where+ duplicate (StoreT wf s) = StoreT (extend StoreT wf) s+ extend f (StoreT wf s) = StoreT (extend (\wf' s' -> f (StoreT wf' s')) wf) s extract (StoreT wf s) = extract wf s instance ComonadTrans (StoreT s) where
Control/Comonad/Trans/Traced.hs view
@@ -34,6 +34,7 @@ import Control.Comonad.Trans.Class import Data.Distributive import Data.Functor.Apply+import Data.Functor.Extend import Data.Functor.Identity import Data.Semigroup import Data.Typeable@@ -54,26 +55,30 @@ instance Apply w => Apply (TracedT m w) where TracedT wf <.> TracedT wa = TracedT (ap <$> wf <.> wa) +instance (ComonadApply w, Monoid m) => ComonadApply (TracedT m w) where+ TracedT wf <@> TracedT wa = TracedT (ap <$> wf <@> wa)+ instance Applicative w => Applicative (TracedT m w) where pure = TracedT . pure . const TracedT wf <*> TracedT wa = TracedT (ap <$> wf <*> wa) instance (Extend w, Semigroup m) => Extend (TracedT m w) where- extend f = TracedT . extend (\wf m -> f (TracedT (fmap (. (<>) m) wf))) . runTracedT+ extended f = TracedT . extended (\wf m -> f (TracedT (fmap (. (<>) m) wf))) . runTracedT -instance (Comonad w, Semigroup m, Monoid m) => Comonad (TracedT m w) where+instance (Comonad w, Monoid m) => Comonad (TracedT m w) where+ extend f = TracedT . extend (\wf m -> f (TracedT (fmap (. mappend m) wf))) . runTracedT extract (TracedT wf) = extract wf mempty -instance (Semigroup m, Monoid m) => ComonadTrans (TracedT m) where+instance Monoid m => ComonadTrans (TracedT m) where lower = fmap ($mempty) . runTracedT -instance (Semigroup m, Monoid m) => ComonadHoist (TracedT m) where+instance Monoid m => ComonadHoist (TracedT m) where cohoist = traced . extract . runTracedT instance Distributive w => Distributive (TracedT m w) where distribute = TracedT . fmap (\tma m -> fmap ($m) tma) . collect runTracedT -trace :: (Comonad w, Monoid m) => m -> TracedT m w a -> a+trace :: Comonad w => m -> TracedT m w a -> a trace m (TracedT wf) = extract wf m listen :: Functor w => TracedT m w a -> TracedT m w (a, m)
Data/Functor/Coproduct.hs view
@@ -17,6 +17,7 @@ import Control.Comonad import Data.Functor.Contravariant+import Data.Functor.Extend import Data.Foldable import Data.Traversable import Data.Semigroup.Foldable@@ -53,11 +54,14 @@ (fmap (Coproduct . Right) . traverse1 f) instance (Extend f, Extend g) => Extend (Coproduct f g) where+ extended f = Coproduct . coproduct+ (Left . extended (f . Coproduct . Left))+ (Right . extended (f . Coproduct . Right))++instance (Comonad f, Comonad g) => Comonad (Coproduct f g) where extend f = Coproduct . coproduct (Left . extend (f . Coproduct . Left)) (Right . extend (f . Coproduct . Right))--instance (Comonad f, Comonad g) => Comonad (Coproduct f g) where extract = coproduct extract extract instance (Contravariant f, Contravariant g) => Contravariant (Coproduct f g) where
comonad-transformers.cabal view
@@ -1,6 +1,6 @@ name: comonad-transformers category: Control, Comonads-version: 2.1.2+version: 3.0 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -22,11 +22,11 @@ library build-depends: base >= 4 && < 5,- comonad >= 1.1.1.5 && < 1.2,+ comonad >= 3.0 && < 3.1, containers >= 0.3 && < 0.6, contravariant >= 0.2.0.1 && < 0.3, distributive >= 0.2.2 && < 0.3,- semigroupoids >= 1.3.1.2 && < 1.4,+ semigroupoids >= 3.0 && < 3.1, semigroups >= 0.8.3.1 && < 0.9, transformers >= 0.2 && < 0.4