constraints 0.10 → 0.10.1
raw patch · 4 files changed
+33/−8 lines, 4 filesdep ~basedep ~binarydep ~hashablePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, binary, hashable, mtl, semigroups, transformers, transformers-compat
API changes (from Hackage documentation)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Semigroup.Semigroup ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Semigroup.Semigroup (Data.Constraint.Dict a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Semigroup.Semigroup GHC.Types.Ordering
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Semigroup.Semigroup [a]
- Data.Constraint: instance (Data.Semigroup.Semigroup a, Data.Semigroup.Semigroup b) Data.Constraint.:=> Data.Semigroup.Semigroup (a, b)
- Data.Constraint: instance Data.Constraint.Class () :: Constraint (Data.Semigroup.Semigroup a)
- Data.Constraint: instance Data.Constraint.Class () :: Constraint (GHC.Base.Monoid a)
- Data.Constraint: instance Data.Semigroup.Semigroup (Data.Constraint.Dict a)
- Data.Constraint: instance Data.Semigroup.Semigroup a Data.Constraint.:=> Data.Semigroup.Semigroup (Data.Functor.Const.Const a b)
- Data.Constraint: instance Data.Semigroup.Semigroup a Data.Constraint.:=> Data.Semigroup.Semigroup (Data.Functor.Identity.Identity a)
- Data.Constraint: instance Data.Semigroup.Semigroup a Data.Constraint.:=> Data.Semigroup.Semigroup (GHC.Base.Maybe a)
- Data.Constraint: instance Data.Semigroup.Semigroup a Data.Constraint.:=> Data.Semigroup.Semigroup (GHC.Types.IO a)
- Data.Constraint.Deferrable: instance forall k1 (k2 :: k1) k3 (a :: k3) (b :: k3). (Data.Typeable.Internal.Typeable k3, Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable b) => Data.Constraint.Deferrable.Deferrable (a ~ b)
- Data.Constraint.Deferrable: instance forall k1 k2 (i1 :: k2) (j1 :: k1) i2 j2 (a :: i2) (b :: j2). (Data.Typeable.Internal.Typeable i2, Data.Typeable.Internal.Typeable j2, Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable b) => Data.Constraint.Deferrable.Deferrable ((a :: i2) ~~ (b :: j2))
- Data.Constraint.Forall: instance forall k (p :: k -> GHC.Types.Constraint) (a :: k) (c :: GHC.Types.Constraint). p a ~ c => Data.Constraint.Forall.InstV p c
- Data.Constraint.Forall: instance p ~ c => Data.Constraint.Forall.InstV p c
- Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting Data.Semigroup.Semigroup ((->) a)
- Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting Data.Semigroup.Semigroup GHC.Base.Maybe
- Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting2 Data.Semigroup.Semigroup (,)
- Data.Constraint.Lifting: instance Data.Semigroup.Semigroup a => Data.Constraint.Lifting.Lifting Data.Semigroup.Semigroup ((,) a)
+ Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Semigroup ()
+ Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Semigroup (Data.Constraint.Dict a)
+ Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Semigroup GHC.Types.Ordering
+ Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Semigroup [a]
+ Data.Constraint: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b) Data.Constraint.:=> GHC.Base.Semigroup (a, b)
+ Data.Constraint: instance Data.Constraint.Class () :: Constraint (GHC.Base.Semigroup a)
+ Data.Constraint: instance Data.Constraint.Class (GHC.Base.Semigroup a) (GHC.Base.Monoid a)
+ Data.Constraint: instance GHC.Base.Semigroup (Data.Constraint.Dict a)
+ Data.Constraint: instance GHC.Base.Semigroup a Data.Constraint.:=> GHC.Base.Semigroup (Data.Functor.Const.Const a b)
+ Data.Constraint: instance GHC.Base.Semigroup a Data.Constraint.:=> GHC.Base.Semigroup (Data.Functor.Identity.Identity a)
+ Data.Constraint: instance GHC.Base.Semigroup a Data.Constraint.:=> GHC.Base.Semigroup (GHC.Base.Maybe a)
+ Data.Constraint: instance GHC.Base.Semigroup a Data.Constraint.:=> GHC.Base.Semigroup (GHC.Types.IO a)
+ Data.Constraint.Deferrable: instance forall i j (a :: i) (b :: j). (Data.Typeable.Internal.Typeable i, Data.Typeable.Internal.Typeable j, Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable b) => Data.Constraint.Deferrable.Deferrable ((a :: i) ~~ (b :: j))
+ Data.Constraint.Deferrable: instance forall k (a :: k) (b :: k). (Data.Typeable.Internal.Typeable k, Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable b) => Data.Constraint.Deferrable.Deferrable (a ~ b)
+ Data.Constraint.Forall: instance (p ~ c) => Data.Constraint.Forall.InstV p c
+ Data.Constraint.Forall: instance forall k (p :: k -> GHC.Types.Constraint) (a :: k) (c :: GHC.Types.Constraint). (p a ~ c) => Data.Constraint.Forall.InstV p c
+ Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting GHC.Base.Semigroup ((->) a)
+ Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting GHC.Base.Semigroup GHC.Base.Maybe
+ Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting2 GHC.Base.Semigroup (,)
+ Data.Constraint.Lifting: instance GHC.Base.Semigroup a => Data.Constraint.Lifting.Lifting GHC.Base.Semigroup ((,) a)
+ Data.Constraint.Nat: plusMinusInverse1 :: forall n m. Dict (((m + n) - n) ~ m)
+ Data.Constraint.Nat: plusMinusInverse2 :: forall n m. (m <= n) :- (((m + n) - m) ~ n)
+ Data.Constraint.Nat: plusMinusInverse3 :: forall n m. (n <= m) :- (((m - n) + n) ~ m)
- Data.Constraint: data Constraint :: *
+ Data.Constraint: data Constraint
- Data.Constraint.Deferrable: [HRefl] :: (:~~:) k1 k1 a a
+ Data.Constraint.Deferrable: [HRefl] :: a :~~: a
- Data.Constraint.Deferrable: [Refl] :: (:~:) k a a
+ Data.Constraint.Deferrable: [Refl] :: a :~: a
- Data.Constraint.Deferrable: data (:~:) k (a :: k) (b :: k) :: forall k. () => k -> k -> *
+ Data.Constraint.Deferrable: data (:~:) (a :: k) (b :: k) :: forall k. () => k -> k -> *
- Data.Constraint.Deferrable: data (:~~:) k1 k2 (a :: k1) (b :: k2) :: forall k1 k2. () => k1 -> k2 -> *
+ Data.Constraint.Deferrable: data (:~~:) (a :: k1) (b :: k2) :: forall k1 k2. () => k1 -> k2 -> *
- Data.Constraint.Nat: euclideanNat :: (1 <= c) :- (a ~ ((c * Div a c) + Mod a c))
+ Data.Constraint.Nat: euclideanNat :: (1 <= c) :- (a ~ (c * Div a c + Mod a c))
- Data.Constraint.Nat: plusDistributesOverTimes :: forall n m o. Dict ((n * (m + o)) ~ ((n * m) + (n * o)))
+ Data.Constraint.Nat: plusDistributesOverTimes :: forall n m o. Dict ((n * (m + o)) ~ (n * m + n * o))
- Data.Constraint.Nat: plusMonotone1 :: forall a b c. (a <= b) :- ((a + c) <= (b + c))
+ Data.Constraint.Nat: plusMonotone1 :: forall a b c. (a <= b) :- (a + c <= b + c)
- Data.Constraint.Nat: plusMonotone2 :: forall a b c. (b <= c) :- ((a + b) <= (a + c))
+ Data.Constraint.Nat: plusMonotone2 :: forall a b c. (b <= c) :- (a + b <= a + c)
- Data.Constraint.Nat: timesDistributesOverPow :: forall n m o. Dict ((n ^ (m + o)) ~ ((n ^ m) * (n ^ o)))
+ Data.Constraint.Nat: timesDistributesOverPow :: forall n m o. Dict ((n ^ (m + o)) ~ (n ^ m * n ^ o))
- Data.Constraint.Nat: timesMonotone1 :: forall a b c. (a <= b) :- ((a * c) <= (b * c))
+ Data.Constraint.Nat: timesMonotone1 :: forall a b c. (a <= b) :- (a * c <= b * c)
- Data.Constraint.Nat: timesMonotone2 :: forall a b c. (b <= c) :- ((a * b) <= (a * c))
+ Data.Constraint.Nat: timesMonotone2 :: forall a b c. (b <= c) :- (a * b <= a * c)
- Data.Constraint.Symbol: takeAppendDrop :: forall n a. Dict ((Take n a ++ Drop n a) ~ a)
+ Data.Constraint.Symbol: takeAppendDrop :: forall n a. Dict (Take n a ++ Drop n a ~ a)
- Data.Constraint.Unsafe: class (~R#) k0 k0 a b => Coercible k0 (a :: k0) (b :: k0)
+ Data.Constraint.Unsafe: class a ~R# b => Coercible (a :: k0) (b :: k0)
Files
- CHANGELOG.markdown +5/−0
- constraints.cabal +12/−7
- src/Data/Constraint.hs +3/−1
- src/Data/Constraint/Nat.hs +13/−0
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+0.10.1 [2018.07.02]+-------------------+* Allow building with GHC 8.6.+* Add three axioms about `(+)` and `(-)` to `Data.Constraint.Nat`.+ 0.10 ---- * Adapt to the `Semigroup`–`Monoid` Proposal (introduced in `base-4.11`):
constraints.cabal view
@@ -1,6 +1,6 @@ name: constraints category: Constraints-version: 0.10+version: 0.10.1 license: BSD2 cabal-version: >= 1.10 license-file: LICENSE@@ -17,7 +17,12 @@ This package provides a vocabulary for working with them. build-type: Simple-tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1+tested-with: GHC == 7.8.4+ , GHC == 7.10.3+ , GHC == 8.0.2+ , GHC == 8.2.2+ , GHC == 8.4.3+ , GHC == 8.6.1 extra-source-files: README.markdown , CHANGELOG.markdown @@ -43,14 +48,14 @@ build-depends: base >= 4.7 && < 5,- binary >= 0.7.3 && < 0.9,+ binary >= 0.7.1 && < 0.9, deepseq >= 1.3 && < 1.5, ghc-prim, hashable >= 1.2 && < 1.3,- mtl >= 2 && < 2.3,- semigroups >= 0.11 && < 0.19,- transformers >= 0.2 && < 0.6,- transformers-compat >= 0.4 && < 1+ mtl >= 2.1.2 && < 2.3,+ semigroups >= 0.17 && < 0.19,+ transformers >= 0.3.0.0 && < 0.6,+ transformers-compat >= 0.5 && < 1 exposed-modules: Data.Constraint
src/Data/Constraint.hs view
@@ -42,7 +42,7 @@ -- -- The need for this extension was first publicized in the paper ----- <http://research.microsoft.com/pubs/67439/gmap3.pdf Scrap your boilerplate with class: extensible generic functions>+-- <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/gmap3.pdf Scrap your boilerplate with class: extensible generic functions> -- -- by Ralf Lämmel and Simon Peyton Jones in 2005, which shoehorned all the -- things they needed into a custom 'Sat' typeclass.@@ -79,7 +79,9 @@ import Control.Monad import Data.Complex import Data.Ratio+#if !MIN_VERSION_base(4,11,0) import Data.Semigroup+#endif import Data.Data import qualified GHC.Exts as Exts (Any) import GHC.Exts (Constraint)
src/Data/Constraint/Nat.hs view
@@ -10,6 +10,9 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE Trustworthy #-}+#if __GLASGOW_HASKELL__ >= 805+{-# LANGUAGE NoStarIsType #-}+#endif -- | Utilities for working with 'KnownNat' constraints. -- -- This module is only available on GHC 8.0 or later.@@ -39,6 +42,7 @@ , timesDiv , eqLe, leEq, leId, leTrans , leZero, zeroLe+ , plusMinusInverse1, plusMinusInverse2, plusMinusInverse3 ) where import Data.Constraint@@ -151,6 +155,15 @@ zeroLe :: forall a. Dict (0 <= a) zeroLe = Dict++plusMinusInverse1 :: forall n m. Dict (((m + n) - n) ~ m)+plusMinusInverse1 = axiom++plusMinusInverse2 :: forall n m. (m <= n) :- (((m + n) - m) ~ n)+plusMinusInverse2 = Sub axiom++plusMinusInverse3 :: forall n m. (n <= m) :- (((m - n) + n) ~ m)+plusMinusInverse3 = Sub axiom plusMonotone1 :: forall a b c. (a <= b) :- (a + c <= b + c) plusMonotone1 = Sub axiom