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)