packages feed

dependent-sum-aeson-orphans 0.2.1.0 → 0.3.0.0

raw patch · 2 files changed

+31/−29 lines, 2 filesdep +somedep ~aesondep ~basedep ~constraintsPVP ok

version bump matches the API change (PVP)

Dependencies added: some

Dependency ranges changed: aeson, base, constraints, dependent-map, dependent-sum

API changes (from Hackage documentation)

- Data.Dependent.Sum.Orphans: instance (Data.Aeson.Types.FromJSON.FromJSON (Data.Some.Some f), Data.Constraint.Extras.Has' Data.Aeson.Types.FromJSON.FromJSON f g) => Data.Aeson.Types.FromJSON.FromJSON (Data.Dependent.Sum.DSum f g)
- Data.Dependent.Sum.Orphans: instance (Data.Aeson.Types.FromJSON.FromJSON (Data.Some.Some f), Data.GADT.Compare.GCompare f, Data.Constraint.Extras.Has' Data.Aeson.Types.FromJSON.FromJSON f g) => Data.Aeson.Types.FromJSON.FromJSON (Data.Dependent.Map.Internal.DMap f g)
- Data.Dependent.Sum.Orphans: instance Data.Constraint.Forall.ForallF Data.Aeson.Types.ToJSON.ToJSON r => Data.Aeson.Types.ToJSON.ToJSON (Data.Some.Some r)
+ Data.Dependent.Sum.Orphans: instance (Data.Aeson.Types.FromJSON.FromJSON (Data.Some.Newtype.Some f), Data.Constraint.Extras.Has' Data.Aeson.Types.FromJSON.FromJSON f g) => Data.Aeson.Types.FromJSON.FromJSON (Data.Dependent.Sum.DSum f g)
+ Data.Dependent.Sum.Orphans: instance (Data.Aeson.Types.FromJSON.FromJSON (Data.Some.Newtype.Some f), Data.GADT.Internal.GCompare f, Data.Constraint.Extras.Has' Data.Aeson.Types.FromJSON.FromJSON f g) => Data.Aeson.Types.FromJSON.FromJSON (Data.Dependent.Map.Internal.DMap f g)
+ Data.Dependent.Sum.Orphans: instance Data.Constraint.Forall.ForallF Data.Aeson.Types.ToJSON.ToJSON r => Data.Aeson.Types.ToJSON.ToJSON (Data.Some.Newtype.Some r)

Files

dependent-sum-aeson-orphans.cabal view
@@ -1,26 +1,27 @@-name: dependent-sum-aeson-orphans-version: 0.2.1.0-license: BSD3-license-file: LICENSE-author: Obsidian Systems-maintainer: maintainer@obsidian.systems-copyright: 2018 Obsidian Systems LLC-build-type: Simple+name:          dependent-sum-aeson-orphans+version:       0.3.0.0+license:       BSD3+license-file:  LICENSE+author:        Obsidian Systems+maintainer:    maintainer@obsidian.systems+copyright:     2020 Obsidian Systems LLC+build-type:    Simple cabal-version: >=1.10-description: JSON instances for DSum, DMap, and Some.-synopsis: JSON instances for DSum, DMap, and Some-category: json-tested-with:-  GHC  ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5+description:   JSON instances for DSum, DMap, and Some.+synopsis:      JSON instances for DSum, DMap, and Some+category:      json+tested-with:   GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4  library-  exposed-modules: Data.Dependent.Sum.Orphans+  exposed-modules:  Data.Dependent.Sum.Orphans   build-depends:-    base >=4.9 && <4.13,-    aeson >= 1.2 && <1.5,-    constraints >= 0.10.1 && < 0.11,-    constraints-extras >= 0.3.0 && < 0.4,-    dependent-map >= 0.3 && < 0.4,-    dependent-sum >= 0.6.1 && < 0.7-  hs-source-dirs: src+      aeson               >=1.2    && <1.5+    , base                >=4.9    && <4.14+    , constraints         >=0.10.1 && <0.13+    , constraints-extras  >=0.3.0  && <0.4+    , dependent-map       >=0.3    && <0.5+    , dependent-sum       >=0.7    && <0.8+    , some                >=1      && <1.1++  hs-source-dirs:   src   default-language: Haskell2010
src/Data/Dependent/Sum/Orphans.hs view
@@ -3,18 +3,19 @@ {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}  module Data.Dependent.Sum.Orphans where  import Data.Aeson-import Data.Constraint import Data.Constraint.Forall import Data.Constraint.Extras-import Data.Dependent.Map (DMap, GCompare)+import Data.Dependent.Map (DMap)+import Data.GADT.Compare (GCompare) import qualified Data.Dependent.Map as DMap import Data.Dependent.Sum-import Data.Some (Some(Some))-import qualified Data.Some as Some+import Data.Some (withSomeM, withSome, Some)  instance (ForallF ToJSON f, Has' ToJSON f g) => ToJSON (DSum f g) where   toJSON ((f :: f a) :=> (g :: g a))@@ -26,12 +27,12 @@ instance (FromJSON (Some f), Has' FromJSON f g) => FromJSON (DSum f g) where   parseJSON x = do     (jf, jg) <- parseJSON x-    Some.This (f :: f a) <- parseJSON jf-    g <- has' @FromJSON @g f (parseJSON jg)-    return $ f :=> g+    withSomeM (parseJSON jf) $ \(f :: f a) -> do+      g <- has' @FromJSON @g f (parseJSON jg)+      return $ f :=> g  instance (FromJSON (Some f), GCompare f, Has' FromJSON f g) => FromJSON (DMap f g) where     parseJSON = fmap DMap.fromList . parseJSON  instance (ForallF ToJSON r) => ToJSON (Some r) where-  toJSON (Some (x :: r a)) = whichever @ToJSON @r @a (toJSON x)+  toJSON some = withSome some $ \(x :: r a) -> whichever @ToJSON @r @a (toJSON x)