packages feed

constraints-extras 0.3.1.0 → 0.3.2.0

raw patch · 3 files changed

+23/−2 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Constraint.Extras: instance forall k (c :: k -> GHC.Types.Constraint) (f :: k -> *) (g :: k -> *). (Data.Constraint.Extras.ArgDict c f, Data.Constraint.Extras.ArgDict c g) => Data.Constraint.Extras.ArgDict c (Data.Functor.Sum.Sum f g)
+ Data.Constraint.Extras: instance forall k (c :: k -> GHC.Types.Constraint) (f :: k -> *) (g :: k -> *). (Data.Constraint.Extras.ArgDict c f, Data.Constraint.Extras.ArgDict c g) => Data.Constraint.Extras.ArgDict c (f GHC.Generics.:+: g)

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for constraints-extras +## 0.3.2.0++* Provide `ArgDict` instances for sums of functors.+ ## 0.3.1.0  * Allow deriving instances with `deriveArgDict` for data and newtype family instances by supplying the name of one of its constructors
constraints-extras.cabal view
@@ -1,5 +1,5 @@ name: constraints-extras-version: 0.3.1.0+version: 0.3.2.0 synopsis: Utility package for constraints description: Convenience functions and TH for working with constraints. See <https://github.com/obsidiansystems/constraints-extras/blob/develop/README.md README.md> for example usage. category: Constraints@@ -33,7 +33,7 @@                   , ConstraintKinds                   , TemplateHaskell   build-depends: base >=4.9 && <4.16-               , constraints >= 0.9 && < 0.13+               , constraints >= 0.9 && < 0.14                , template-haskell >=2.11 && <2.18   hs-source-dirs:  src   default-language: Haskell2010
src/Data/Constraint/Extras.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-}@@ -51,7 +52,9 @@ import Data.Constraint.Compose import Data.Constraint.Flip import Data.Constraint.Forall+import Data.Functor.Sum (Sum(..)) import Data.Kind+import GHC.Generics ((:+:)(..))  -- | Morally, this class is for GADTs whose indices can be finitely -- enumerated. An @'ArgDict' c f@ instance allows us to do two things:@@ -73,6 +76,20 @@   --   -- > argDict I :: Dict (Show Int)   argDict :: ConstraintsFor f c => f a -> Dict (c a)++-- | @since 0.3.2.0+instance (ArgDict c f, ArgDict c g) => ArgDict c (f :+: g) where+  type ConstraintsFor (f :+: g) c = (ConstraintsFor f c, ConstraintsFor g c)+  argDict = \case+    L1 f -> argDict f+    R1 g -> argDict g++-- | @since 0.3.2.0+instance (ArgDict c f, ArgDict c g) => ArgDict c (Sum f g) where+  type ConstraintsFor (Sum f g) c = (ConstraintsFor f c, ConstraintsFor g c)+  argDict = \case+    InL f -> argDict f+    InR g -> argDict g  -- | \"Primed\" variants (@ConstraintsFor'@, 'argDict'', 'Has'', -- 'has'', &c.) use the 'ArgDict' instance on @f@ to apply constraints