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 +14/−0
- Data/Functor/Coproduct.hs +14/−0
- comonad-transformers.cabal +3/−1
+ 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