contravariant 0.4.4 → 0.5
raw patch · 3 files changed
+48/−8 lines, 3 filesdep +ghc-primdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: ghc-prim
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.Functor.Contravariant: (>$) :: Contravariant f => b -> f b -> f a
+ Data.Functor.Contravariant: instance [safe] (Contravariant f, Contravariant g) => Contravariant (f :*: g)
+ Data.Functor.Contravariant: instance [safe] (Contravariant f, Contravariant g) => Contravariant (f :+: g)
+ Data.Functor.Contravariant: instance [safe] (Functor f, Contravariant g) => Contravariant (f :.: g)
+ Data.Functor.Contravariant: instance [safe] Contravariant (K1 i c)
+ Data.Functor.Contravariant: instance [safe] Contravariant U1
+ Data.Functor.Contravariant: instance [safe] Contravariant V1
+ Data.Functor.Contravariant: instance [safe] Contravariant f => Contravariant (M1 i c f)
+ Data.Functor.Contravariant: instance [safe] Contravariant f => Contravariant (Rec1 f)
- Data.Functor.Contravariant: class Contravariant f
+ Data.Functor.Contravariant: class Contravariant f where >$ = contramap . const
Files
- CHANGELOG.markdown +5/−0
- Data/Functor/Contravariant.hs +38/−7
- contravariant.cabal +5/−1
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+0.5+---+* Added `(>$)`+* Added instances for `GHC.Generics`+ 0.4.4 ----- * Fixed compatibility with GHC 7.7 and tightened `Safe` Haskell support.
Data/Functor/Contravariant.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE CPP #-}-#ifdef __GLASGOW_HASKELL__+{-# LANGUAGE TypeOperators #-} {-# LANGUAGE DeriveDataTypeable #-} #if __GLASGOW_HASKELL__ >= 702 #if MIN_VERSION_transformers(0,3,0)@@ -12,12 +12,10 @@ {-# LANGUAGE Trustworthy #-} #endif #endif-#endif- ----------------------------------------------------------------------------- -- | -- Module : Data.Functor.Contravariant--- Copyright : (C) 2007-2011 Edward Kmett+-- Copyright : (C) 2007-2014 Edward Kmett -- License : BSD-style (see the file LICENSE) -- -- Maintainer : Edward Kmett <ekmett@gmail.com>@@ -58,10 +56,11 @@ import Data.Functor.Constant import Data.Functor.Compose import Data.Functor.Reverse-import Data.Proxy+import GHC.Generics import Prelude hiding ((.),id)-#ifdef __GLASGOW_HASKELL__ import Data.Typeable+#if __GLASGOW_HASKELL__ < 707+import Data.Proxy #endif -- | Any instance should be subject to the following laws:@@ -76,8 +75,14 @@ class Contravariant f where contramap :: (a -> b) -> f b -> f a -infixl 4 >$<, >$$<+ -- | Replace all locations in the output with the same value.+ -- The default definition is @'contramap' . 'const'@, but this may be+ -- overridden with a more efficient version.+ (>$) :: b -> f b -> f a+ (>$) = contramap . const +infixl 4 >$, >$<, >$$<+ (>$<) :: Contravariant f => (a -> b) -> f b -> f a (>$<) = contramap {-# INLINE (>$<) #-}@@ -85,6 +90,32 @@ (>$$<) :: Contravariant f => f b -> (a -> b) -> f a (>$$<) = flip contramap {-# INLINE (>$$<) #-}++instance Contravariant V1 where+ contramap _ x = x `seq` undefined++instance Contravariant U1 where+ contramap _ U1 = U1++instance Contravariant f => Contravariant (Rec1 f) where+ contramap f (Rec1 fp)= Rec1 (contramap f fp)++instance Contravariant f => Contravariant (M1 i c f) where+ contramap f (M1 fp) = M1 (contramap f fp)++instance Contravariant (K1 i c) where+ contramap _ (K1 c) = K1 c++instance (Contravariant f, Contravariant g) => Contravariant (f :*: g) where+ contramap f (xs :*: ys) = contramap f xs :*: contramap f ys++instance (Functor f, Contravariant g) => Contravariant (f :.: g) where+ contramap f (Comp1 fg) = Comp1 (fmap (contramap f) fg)+ {-# INLINE contramap #-}++instance (Contravariant f, Contravariant g) => Contravariant (f :+: g) where+ contramap f (L1 xs) = L1 (contramap f xs)+ contramap f (R1 ys) = R1 (contramap f ys) instance (Contravariant f, Contravariant g) => Contravariant (Product f g) where contramap f (Pair a b) = Pair (contramap f a) (contramap f b)
contravariant.cabal view
@@ -1,6 +1,6 @@ name: contravariant category: Control, Data-version: 0.4.4+version: 0.5 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -27,6 +27,10 @@ tagged >= 0.4.4 && < 1, transformers >= 0.2 && < 0.4, transformers-compat >= 0.1 && < 1++ if impl(ghc >= 7.4 && < 7.6)+ build-depends: ghc-prim+ exposed-modules: Data.Functor.Contravariant Data.Functor.Contravariant.Compose