packages feed

comonad-transformers 1.5.0.4 → 1.5.2

raw patch · 3 files changed

+31/−1 lines, 3 filesdep +contravariantPVP ok

version bump matches the API change (PVP)

Dependencies added: contravariant

API changes (from Hackage documentation)

+ Data.Functor.Composition: class Composition o
+ Data.Functor.Composition: compose :: Composition o => f (g x) -> o f g x
+ Data.Functor.Composition: decompose :: Composition o => o f g x -> f (g x)
+ Data.Functor.Composition: instance Composition Compose
+ Data.Functor.Coproduct: instance (Contravariant f, Contravariant g) => Contravariant (Coproduct f g)
+ Data.Functor.Coproduct: instance (Foldable1 f, Foldable1 g) => Foldable1 (Coproduct f g)
+ Data.Functor.Coproduct: instance (Traversable1 f, Traversable1 g) => Traversable1 (Coproduct f g)

Files

+ Data/Functor/Composition.hs view
@@ -0,0 +1,14 @@+module Data.Functor.Composition +  ( Composition(..) ) where++import Data.Functor.Compose+  +-- | We often need to distinguish between various forms of Functor-like composition in Haskell in order to please the type system.+-- This lets us work with these representations uniformly.+class Composition o where+  decompose :: o f g x -> f (g x)+  compose :: f (g x) -> o f g x++instance Composition Compose where+  decompose = getCompose+  compose = Compose
Data/Functor/Coproduct.hs view
@@ -18,9 +18,12 @@ import Control.Comonad import Data.Functor.Apply import Data.Functor.Alt+import Data.Functor.Contravariant import Data.Functor.Extend import Data.Foldable import Data.Traversable+import Data.Semigroup.Foldable+import Data.Semigroup.Traversable  newtype Coproduct f g a = Coproduct { getCoproduct :: Either (f a) (g a) } @@ -39,10 +42,18 @@ instance (Foldable f, Foldable g) => Foldable (Coproduct f g) where   foldMap f = coproduct (foldMap f) (foldMap f) +instance (Foldable1 f, Foldable1 g) => Foldable1 (Coproduct f g) where+  foldMap1 f = coproduct (foldMap1 f) (foldMap1 f)+ instance (Traversable f, Traversable g) => Traversable (Coproduct f g) where   traverse f = coproduct     (fmap (Coproduct . Left) . traverse f)       (fmap (Coproduct . Right) . traverse f)++instance (Traversable1 f, Traversable1 g) => Traversable1 (Coproduct f g) where+  traverse1 f = coproduct+    (fmap (Coproduct . Left) . traverse1 f)  +    (fmap (Coproduct . Right) . traverse1 f)    instance (Extend f, Extend g) => Extend (Coproduct f g) where   extend f = Coproduct . coproduct@@ -51,3 +62,6 @@  instance (Comonad f, Comonad g) => Comonad (Coproduct f g) where   extract = coproduct extract extract++instance (Contravariant f, Contravariant g) => Contravariant (Coproduct f g) where+  contramap f = Coproduct . coproduct (Left . contramap f) (Right . contramap f)
comonad-transformers.cabal view
@@ -1,6 +1,6 @@ name:          comonad-transformers category:      Control, Comonads-version:       1.5.0.4+version:       1.5.2 license:       BSD3 cabal-version: >= 1.6 license-file:  LICENSE@@ -26,6 +26,7 @@   build-depends:      base >= 4 && < 4.4,     comonad >= 1.0.1 && < 1.1,+    contravariant >= 0.1.2 && < 0.2,     distributive >= 0.1 && < 0.2,     semigroupoids >= 1.1.1 && < 1.2,     semigroups >= 0.3.4 && < 0.4,@@ -56,5 +57,6 @@     Control.Comonad.Trans.Traced.Memo     Control.Comonad.Trans.Stream     Data.Functor.Coproduct+    Data.Functor.Composition    ghc-options:      -Wall