packages feed

contravariant 0.2.0.2 → 0.3

raw patch · 4 files changed

+44/−18 lines, 4 filesdep +transformers-compatPVP ok

version bump matches the API change (PVP)

Dependencies added: transformers-compat

API changes (from Hackage documentation)

+ Data.Functor.Contravariant: instance (Functor f, Contravariant g) => Contravariant (Compose f g)
+ Data.Functor.Contravariant: instance Contravariant f => Contravariant (Backwards f)
+ Data.Functor.Contravariant: instance Contravariant f => Contravariant (Reverse f)
+ Data.Functor.Contravariant.Compose: instance (Functor f, Functor g) => Functor (ComposeCF f g)
+ Data.Functor.Contravariant.Compose: instance (Functor f, Functor g) => Functor (ComposeFC f g)

Files

+ CHANGELOG.markdown view
@@ -0,0 +1,5 @@+0.3+---+* Added `Backwards` and `Reverse` instances for `transformers` 0.3+* Added `instance (Functor f, Contravariant g) => Contravariant (Compose f g)`. (This is non-canonical, but is necessary to support other packages.)+* Added `Functor` instances to `ComposeFC` and `ComposeCF` for use when modeling phantom type parameters caused mixing `Functor` + `Contravariant`.
Data/Functor/Contravariant.hs view
@@ -36,9 +36,12 @@   ) where  import Control.Applicative+import Control.Applicative.Backwards import Control.Category import Data.Functor.Product import Data.Functor.Constant+import Data.Functor.Compose+import Data.Functor.Reverse import Prelude hiding ((.),id)  -- | Any instance should be subject to the following laws:@@ -63,6 +66,27 @@ (>$$<) = flip contramap {-# INLINE (>$$<) #-} +instance (Contravariant f, Contravariant g) => Contravariant (Product f g) where+  contramap f (Pair a b) = Pair (contramap f a) (contramap f b)++instance Contravariant (Constant a) where+  contramap _ (Constant a) = Constant a++instance Contravariant (Const a) where+  contramap _ (Const a) = Const a++instance (Functor f, Contravariant g) => Contravariant (Compose f g) where+  contramap f (Compose fga) = Compose (fmap (contramap f) fga)+  {-# INLINE contramap #-}++instance Contravariant f => Contravariant (Backwards f) where+  contramap f = Backwards . contramap f . forwards+  {-# INLINE contramap #-}++instance Contravariant f => Contravariant (Reverse f) where+  contramap f = Reverse . contramap f . getReverse+  {-# INLINE contramap #-}+ newtype Predicate a = Predicate { getPredicate :: a -> Bool }  -- | A 'Predicate' is a 'Contravariant' 'Functor', because 'contramap' can@@ -105,14 +129,3 @@ instance Contravariant (Op a) where   contramap f g = Op (getOp g . f) --- | Data.Functor.Product-instance (Contravariant f, Contravariant g) => Contravariant (Product f g) where-  contramap f (Pair a b) = Pair (contramap f a) (contramap f b)---- | Data.Functor.Constant-instance Contravariant (Constant a) where-  contramap _ (Constant a) = Constant a---- | Control.Applicative.Const-instance Contravariant (Const a) where-  contramap _ (Const a) = Const a
Data/Functor/Contravariant/Compose.hs view
@@ -9,7 +9,7 @@ -- -- Composition of contravariant functors. -module Data.Functor.Contravariant.Compose +module Data.Functor.Contravariant.Compose   ( Compose(..)   , ComposeFC(..)   , ComposeCF(..)@@ -24,14 +24,19 @@     fmap f (Compose x) = Compose (contramap (contramap f) x)  -- | Composition of covariant and contravariant functors-newtype ComposeFC f g a = ComposeFC { getComposeFC :: f (g a) } +newtype ComposeFC f g a = ComposeFC { getComposeFC :: f (g a) }  instance (Functor f, Contravariant g) => Contravariant (ComposeFC f g) where     contramap f (ComposeFC x) = ComposeFC (fmap (contramap f) x) +instance (Functor f, Functor g) => Functor (ComposeFC f g) where+    fmap f (ComposeFC x) = ComposeFC (fmap (fmap f) x)+ -- | Composition of contravariant and covariant functors-newtype ComposeCF f g a = ComposeCF { getComposeCF :: f (g a) } +newtype ComposeCF f g a = ComposeCF { getComposeCF :: f (g a) }  instance (Contravariant f, Functor g) => Contravariant (ComposeCF f g) where     contramap f (ComposeCF x) = ComposeCF (contramap (fmap f) x) +instance (Functor f, Functor g) => Functor (ComposeCF f g) where+    fmap f (ComposeCF x) = ComposeCF (fmap (fmap f) x)
contravariant.cabal view
@@ -1,6 +1,6 @@ name:          contravariant category:      Control, Data-version:       0.2.0.2+version:       0.3 license:       BSD3 cabal-version: >= 1.6 license-file:  LICENSE@@ -13,7 +13,9 @@ synopsis:      Haskell 98 contravariant functors description:   Haskell 98 contravariant functors build-type:    Simple-extra-source-files: .travis.yml+extra-source-files:+  .travis.yml+  CHANGELOG.markdown  source-repository head   type: git@@ -21,8 +23,9 @@  library   build-depends:-    base < 5,-    transformers >= 0.2 && < 0.4+    base                          < 5,+    transformers        >= 0.2 && < 0.4,+    transformers-compat >= 0.1 && < 1   exposed-modules:     Data.Functor.Contravariant     Data.Functor.Contravariant.Compose