packages feed

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 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