invariant 0.5.6 → 0.6
raw patch · 3 files changed
+48/−9 lines, 3 filesdep ~template-haskellPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: template-haskell
API changes (from Hackage documentation)
- Data.Functor.Invariant: instance Control.Comonad.Comonad w => Data.Functor.Invariant.Invariant2 (Control.Comonad.Cokleisli w)
- Data.Functor.Invariant: instance GHC.Base.Monad m => Data.Functor.Invariant.Invariant (Control.Arrow.Kleisli m a)
- Data.Functor.Invariant: instance GHC.Base.Monad m => Data.Functor.Invariant.Invariant2 (Control.Arrow.Kleisli m)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Choice.CopastroSum p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Choice.PastroSum p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Closed.Environment p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Mapping.FreeMapping p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Strong.Copastro p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Strong.Pastro p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Traversing.FreeTraversing p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant (Data.Profunctor.Yoneda.Coyoneda p a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant m => Data.Functor.Invariant.Invariant (Control.Arrow.Kleisli m a)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant m => Data.Functor.Invariant.Invariant2 (Control.Arrow.Kleisli m)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant w => Data.Functor.Invariant.Invariant2 (Control.Comonad.Cokleisli w)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant2 (Data.Profunctor.Strong.Copastro p)
+ Data.Functor.Invariant: instance Data.Functor.Invariant.Invariant2 (Data.Profunctor.Yoneda.Coyoneda p)
Files
- CHANGELOG.md +10/−0
- invariant.cabal +1/−1
- src/Data/Functor/Invariant.hs +37/−8
CHANGELOG.md view
@@ -1,3 +1,13 @@+# 0.6 [2022.07.03]+* Loosen the `Monad` constraint in the `Invariant(2)` instances for+ `Kleisli` to an `Invariant` constraint.+* Loosen the `Comonad` constraint in the `Invariant2` instance for `Cokleisli`+ to an `Invariant` constraint.+* Add `Invariant` instances for `PastroSum`, `CopastroSum`, `Environment`,+ `FreeMapping`, `Pastro`, and `FreeTraversing` from the `profunctors` library.+* Add `Invariant(2)` instances for `Copastro` and `Coyoneda` from the+ `profunctors` library.+ # 0.5.6 [2022.05.07] * Add `InvariantProfunctor` and `InvariantArrow` newtypes that admit implementations of `invmap` that only require `Profunctor` or `Arrow`
invariant.cabal view
@@ -1,5 +1,5 @@ name: invariant-version: 0.5.6+version: 0.6 synopsis: Haskell98 invariant functors description: Haskell98 invariant functors (also known as exponential functors). .
src/Data/Functor/Invariant.hs view
@@ -112,7 +112,7 @@ import Data.Bifunctor.Wrapped -- comonad-import Control.Comonad (Comonad(..), Cokleisli(..), liftW)+import Control.Comonad (Cokleisli(..)) -- containers import Data.IntMap (IntMap)@@ -247,8 +247,8 @@ => Invariant (ArrowMonad a) where invmap f _ (ArrowMonad m) = ArrowMonad (m >>> arr f) -- | from "Control.Arrow"-instance Monad m => Invariant (Kleisli m a) where- invmap = invmap2 id id+instance Invariant m => Invariant (Kleisli m a) where+ invmap f g (Kleisli m) = Kleisli (invmap f g . m) -- | from "Control.Exception" instance Invariant Handler where@@ -436,6 +436,9 @@ instance Invariant2 p => Invariant (Closure p a) where invmap = invmap2 id id -- | from the @profunctors@ package+instance Invariant (Environment p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package instance Invariant2 p => Invariant (Codensity p a) where invmap = invmap2 id id -- | from the @profunctors@ package@@ -457,9 +460,27 @@ instance Invariant2 p => Invariant (Tambara p a) where invmap = invmap2 id id -- | from the @profunctors@ package+instance Invariant (PastroSum p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package+instance Invariant (FreeMapping p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package+instance Invariant (FreeTraversing p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package+instance Invariant (Pastro p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package instance Invariant (Cotambara p a) where invmap = invmapFunctor -- | from the @profunctors@ package+instance Invariant (Copastro p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package+instance Invariant (CopastroSum p a) where+ invmap = invmap2 id id+-- | from the @profunctors@ package instance Invariant (CotambaraSum p a) where invmap = invmapFunctor -- | from the @profunctors@ package@@ -468,6 +489,9 @@ -- | from the @profunctors@ package instance Invariant (Yoneda p a) where invmap = invmapFunctor+-- | from the @profunctors@ package+instance Invariant (Coyoneda p a) where+ invmap = invmap2 id id -- | from the @StateVar@ package instance Invariant StateVar where@@ -702,8 +726,8 @@ invmap2 _ f' g _ (App.WrapArrow x) = App.WrapArrow $ arr g Cat.. x Cat.. arr f' -- | from "Control.Arrow"-instance Monad m => Invariant2 (Kleisli m) where- invmap2 _ f' g _ (Kleisli m) = Kleisli $ liftM g . m . f'+instance Invariant m => Invariant2 (Kleisli m) where+ invmap2 _ f' g g' (Kleisli m) = Kleisli $ invmap g g' . m . f' -- | from "Data.Semigroup" instance Invariant2 Arg where@@ -739,9 +763,8 @@ invmap2 = invmap2Bifunctor -- | from the @comonad@ package-instance Comonad w => Invariant2 (Cokleisli w) where- invmap2 _ f' g _ (Cokleisli w) = Cokleisli $ g . w . liftW f'-+instance Invariant w => Invariant2 (Cokleisli w) where+ invmap2 f f' g _ (Cokleisli w) = Cokleisli $ g . w . invmap f' f -- | from the @contravariant@ package instance Invariant2 Op where invmap2 f f' g g' (Op x) = Op $ invmap2 g g' f f' x@@ -810,6 +833,9 @@ instance Invariant2 (Cotambara p) where invmap2 = invmap2Profunctor -- | from the @profunctors@ package+instance Invariant2 (Copastro p) where+ invmap2 = invmap2Profunctor+-- | from the @profunctors@ package instance Invariant2 (CopastroSum p) where invmap2 = invmap2Profunctor -- | from the @profunctors@ package@@ -821,6 +847,9 @@ TambaraSum (invmap2 (first f) (first f') (first g) (first g') p) -- | from the @profunctors@ package instance Invariant2 (Yoneda p) where+ invmap2 = invmap2Profunctor+-- | from the @profunctors@ package+instance Invariant2 (Coyoneda p) where invmap2 = invmap2Profunctor -- | from the @tagged@ package