contravariant 0.1.1 → 0.1.2
raw patch · 3 files changed
+60/−5 lines, 3 filesdep +transformersPVP ok
version bump matches the API change (PVP)
Dependencies added: transformers
API changes (from Hackage documentation)
+ Data.Functor.Contravariant: instance (Contravariant f, Contravariant g) => Contravariant (Product f g)
+ Data.Functor.Contravariant: instance Contravariant (Const a)
+ Data.Functor.Contravariant: instance Contravariant (Constant a)
+ Data.Functor.Contravariant.Compose: Compose :: f (g a) -> Compose f g a
+ Data.Functor.Contravariant.Compose: ComposeCF :: f (g a) -> ComposeCF f g a
+ Data.Functor.Contravariant.Compose: ComposeFC :: f (g a) -> ComposeFC f g a
+ Data.Functor.Contravariant.Compose: getCompose :: Compose f g a -> f (g a)
+ Data.Functor.Contravariant.Compose: getComposeCF :: ComposeCF f g a -> f (g a)
+ Data.Functor.Contravariant.Compose: getComposeFC :: ComposeFC f g a -> f (g a)
+ Data.Functor.Contravariant.Compose: instance (Contravariant f, Contravariant g) => Functor (Compose f g)
+ Data.Functor.Contravariant.Compose: instance (Contravariant f, Functor g) => Contravariant (ComposeCF f g)
+ Data.Functor.Contravariant.Compose: instance (Functor f, Contravariant g) => Contravariant (ComposeFC f g)
+ Data.Functor.Contravariant.Compose: newtype Compose f g a
+ Data.Functor.Contravariant.Compose: newtype ComposeCF f g a
+ Data.Functor.Contravariant.Compose: newtype ComposeFC f g a
Files
- Data/Functor/Contravariant.hs +16/−2
- Data/Functor/Contravariant/Compose.hs +37/−0
- contravariant.cabal +7/−3
Data/Functor/Contravariant.hs view
@@ -32,6 +32,10 @@ , Op(..) ) where +import Control.Applicative+import Data.Functor.Product+import Data.Functor.Constant+ -- | Any instance should be subject to the following laws: -- -- > contramap id = id@@ -81,10 +85,20 @@ defaultEquivalence :: Eq a => Equivalence a defaultEquivalence = Equivalence (==) -- -- | Dual function arrows. newtype Op a b = Op { getOp :: b -> a } 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
@@ -0,0 +1,37 @@+-- |+-- Module : Data.Functor.Contravariant.Compose+-- Copyright : (c) Edward Kmett 2010+-- License : BSD3+--+-- Maintainer : ekmett@gmail.com+-- Stability : experimental+-- Portability : portable+--+-- Composition of contravariant functors.++module Data.Functor.Contravariant.Compose + ( Compose(..)+ , ComposeFC(..)+ , ComposeCF(..)+ ) where++import Data.Functor.Contravariant++-- | Composition of two contravariant functors+newtype Compose f g a = Compose { getCompose :: f (g a) }++instance (Contravariant f, Contravariant g) => Functor (Compose f g) where+ 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) } ++instance (Functor f, Contravariant g) => Contravariant (ComposeFC f g) where+ contramap f (ComposeFC x) = ComposeFC (fmap (contramap f) x)++-- | Composition of contravariant and covariant functors+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)+
contravariant.cabal view
@@ -1,6 +1,6 @@ name: contravariant category: Control, Data-version: 0.1.1+version: 0.1.2 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -18,6 +18,10 @@ location: git://github.com/ekmett/contravariant.git library- build-depends: base < 4.5- exposed-modules: Data.Functor.Contravariant+ build-depends: + base < 4.5,+ transformers >= 0.2.2 && < 0.3+ exposed-modules: + Data.Functor.Contravariant+ Data.Functor.Contravariant.Compose ghc-options: -Wall