on master help sign in
Merge pull request #671 from phadej/contravariant

Add Contravariant ToJSONKeyFunction instance

commitb54c54ab542992cdd69c85fd4db84eff9a3b8cb0 authorAdam Bergmark <adam@bergmark.nl> dateTue 2 Oct 2018, 18:55 (8 years ago) parenta4db5072712c21
3 files changed+12
Data/Aeson/Types/ToJSON.hs+4 aeson.cabal+4 benchmarks/aeson-benchmarks.cabal+4
Data/Aeson/Types/ToJSON.hs+4
@@ -74,6 +74,7 @@ import Data.DList (DList)
7474import Data.Fixed (Fixed, HasResolution)
7575import Data.Foldable (toList)
7676import Data.Functor.Compose (Compose(..))
77+import Data.Functor.Contravariant (Contravariant (..))
7778import Data.Functor.Identity (Identity(..))
7879import Data.Functor.Product (Product(..))
7980import Data.Functor.Sum (Sum(..))
@@ -498,6 +499,9 @@ toJSONKeyTextEnc e = ToJSONKeyText tot e
498499 . E.encodingToLazyByteString
499500 . e
500501
502+instance Contravariant ToJSONKeyFunction where
503+ contramap = contramapToJSONKeyFunction
504+
501505-- | Contravariant map, as 'ToJSONKeyFunction' is a contravariant functor.
502506contramapToJSONKeyFunction :: (b -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction b
503507contramapToJSONKeyFunction h x = case x of
aeson.cabal+4
@@ -119,6 +119,10 @@ library
119119 else
120120 build-depends: bytestring >= 0.10.4 && < 0.11
121121
122+ if !impl(ghc >= 8.6)
123+ build-depends:
124+ contravariant >=1.4.1 && <1.6
125+
122126 if !impl(ghc >= 8.0)
123127 -- `Data.Semigroup` and `Control.Monad.Fail` and `Control.Monad.IO.Class` are available in base only since GHC 8.0 / base 4.9
124128 build-depends:
benchmarks/aeson-benchmarks.cabal+4
@@ -63,6 +63,10 @@ library
6363 -- `Data.Semigroup` is available in base only since GHC 8.0 / base 4.9
6464 build-depends: semigroups >= 0.18.2 && < 0.19
6565
66+ if !impl(ghc >= 8.6)
67+ build-depends:
68+ contravariant >=1.4.1 && <1.6
69+
6670 include-dirs: ../include
6771
6872 ghc-options: -O2 -Wall