Hello community, here is the log from the commit of package ghc-constraints for openSUSE:Factory checked in at 2016-01-28 17:23:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-constraints (Old) and /work/SRC/openSUSE:Factory/.ghc-constraints.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-constraints" Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-constraints/ghc-constraints.changes 2016-01-08 15:23:17.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.ghc-constraints.new/ghc-constraints.changes 2016-01-28 17:24:35.000000000 +0100 @@ -1,0 +2,10 @@ +Wed Jan 20 09:03:54 UTC 2016 - [email protected] + +- update to 0.8 +* Remove the need for closed type families from the new Forall. +* Found a nicer encoding of the initial object in the category of constraints + using a nullary constraint. +* binary 0.8 compatibility +* transformers 0.5 compatibility + +------------------------------------------------------------------- Old: ---- constraints-0.6.tar.gz New: ---- constraints-0.8.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-constraints.spec ++++++ --- /var/tmp/diff_new_pack.DVAEXM/_old 2016-01-28 17:24:36.000000000 +0100 +++ /var/tmp/diff_new_pack.DVAEXM/_new 2016-01-28 17:24:36.000000000 +0100 @@ -19,7 +19,7 @@ %global pkg_name constraints Name: ghc-constraints -Version: 0.6 +Version: 0.8 Release: 0 Summary: Constraint manipulation License: BSD-2-Clause ++++++ constraints-0.6.tar.gz -> constraints-0.8.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.6/constraints.cabal new/constraints-0.8/constraints.cabal --- old/constraints-0.6/constraints.cabal 2015-11-10 14:16:35.000000000 +0100 +++ new/constraints-0.8/constraints.cabal 2016-01-17 03:10:38.000000000 +0100 @@ -1,6 +1,6 @@ name: constraints category: Constraints -version: 0.6 +version: 0.8 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE @@ -17,7 +17,7 @@ This package provides a vocabulary for working with them. build-type: Simple -tested-with: GHC == 7.8.3, GHC == 7.7.20131027, GHC == 7.7.20131025 +tested-with: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.1, GHC == 7.10.2 extra-source-files: README.markdown source-repository head @@ -41,26 +41,24 @@ GADTs build-depends: - base >= 4.6 && < 5, - binary >= 0.7.3 && < 0.8, + base >= 4.7 && < 5, + binary >= 0.7.3 && < 0.9, deepseq >= 1.3 && < 1.5, ghc-prim, hashable >= 1.2 && < 1.3, mtl >= 2 && < 2.3, - transformers >= 0.2 && < 0.5, + transformers >= 0.2 && < 0.6, transformers-compat >= 0.4 && < 1 if impl(ghc < 7.8) build-depends: newtype >= 0.2 && < 0.3, tagged >= 0.2 && < 1 - else - exposed-modules: - Data.Constraint.Forall exposed-modules: Data.Constraint Data.Constraint.Deferrable + Data.Constraint.Forall Data.Constraint.Lifting Data.Constraint.Unsafe diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.6/src/Data/Constraint/Forall.hs new/constraints-0.8/src/Data/Constraint/Forall.hs --- old/constraints-0.6/src/Data/Constraint/Forall.hs 2015-11-10 14:16:35.000000000 +0100 +++ new/constraints-0.8/src/Data/Constraint/Forall.hs 2016-01-17 03:10:38.000000000 +0100 @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -7,11 +8,14 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE Trustworthy #-} {-# LANGUAGE PolyKinds #-} +#if __GLASGOW_HASKELL__ >= 800 +{-# LANGUAGE UndecidableSuperClasses #-} +#endif ----------------------------------------------------------------------------- -- | -- Module : Data.Constraint.Forall -- Copyright : (C) 2011-2015 Edward Kmett, --- (C) 2015 Ørjan Johansen, +-- (C) 2015 Ørjan Johansen -- License : BSD-style (see the file LICENSE) -- -- Maintainer : Edward Kmett <[email protected]> @@ -95,22 +99,22 @@ -- which would be disastrous. -- | A representation of the quantified constraint @forall a. p a@. -type family Forall (p :: k -> Constraint) :: Constraint where - Forall p = Forall_ p +type family Forall (p :: k -> Constraint) :: Constraint +type instance Forall p = Forall_ p class p (Skolem p) => Forall_ (p :: k -> Constraint) instance p (Skolem p) => Forall_ (p :: k -> Constraint) -- | A representation of the quantified constraint @forall a. p (f a)@. -type family ForallF (p :: k2 -> Constraint) (f :: k1 -> k2) :: Constraint where - ForallF p f = ForallF_ p f +type family ForallF (p :: k2 -> Constraint) (f :: k1 -> k2) :: Constraint +type instance ForallF p f = ForallF_ p f class p (f (SkolemF p f)) => ForallF_ (p :: k2 -> Constraint) (f :: k1 -> k2) instance p (f (SkolemF p f)) => ForallF_ (p :: k2 -> Constraint) (f :: k1 -> k2) type Forall1 p = Forall p -- | A representation of the quantified constraint @forall f a. p (t f a)@. -type family ForallT (p :: k3 -> Constraint) (t :: k1 -> k2 -> k3) :: Constraint where - ForallT p t = ForallT_ p t +type family ForallT (p :: k3 -> Constraint) (t :: k1 -> k2 -> k3) :: Constraint +type instance ForallT p t = ForallT_ p t class p (t (SkolemT1 p t) (SkolemT2 p t)) => ForallT_ (p :: k3 -> Constraint) (t :: k1 -> k2 -> k3) instance p (t (SkolemT1 p t) (SkolemT2 p t)) => ForallT_ (p :: k3 -> Constraint) (t :: k1 -> k2 -> k3) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.6/src/Data/Constraint/Lifting.hs new/constraints-0.8/src/Data/Constraint/Lifting.hs --- old/constraints-0.6/src/Data/Constraint/Lifting.hs 2015-11-10 14:16:35.000000000 +0100 +++ new/constraints-0.8/src/Data/Constraint/Lifting.hs 2016-01-17 03:10:38.000000000 +0100 @@ -112,6 +112,17 @@ instance Traversable f => Lifting Traversable (Compose f) where lifting = Sub Dict instance Applicative f => Lifting Applicative (Compose f) where lifting = Sub Dict instance Alternative f => Lifting Alternative (Compose f) where lifting = Sub Dict -- overconstrained + +#if MIN_VERSION_transformers(0,5,0) +instance Show1 f => Lifting Show1 (Compose f) where lifting = Sub Dict +instance Eq1 f => Lifting Eq1 (Compose f) where lifting = Sub Dict +instance Ord1 f => Lifting Ord1 (Compose f) where lifting = Sub Dict +instance Read1 f => Lifting Read1 (Compose f) where lifting = Sub Dict +instance (Eq1 f, Eq1 g) => Lifting Eq (Compose f g) where lifting = Sub Dict +instance (Ord1 f, Ord1 g) => Lifting Ord (Compose f g) where lifting = Sub Dict +instance (Read1 f, Read1 g) => Lifting Read (Compose f g) where lifting = Sub Dict +instance (Show1 f, Show1 g) => Lifting Show (Compose f g) where lifting = Sub Dict +#else instance (Functor f, Show1 f) => Lifting Show1 (Compose f) where lifting = Sub Dict instance (Functor f, Eq1 f) => Lifting Eq1 (Compose f) where lifting = Sub Dict instance (Functor f, Ord1 f) => Lifting Ord1 (Compose f) where lifting = Sub Dict @@ -120,6 +131,7 @@ instance (Functor f, Ord1 f, Ord1 g) => Lifting Ord (Compose f g) where lifting = Sub Dict instance (Functor f, Read1 f, Read1 g) => Lifting Read (Compose f g) where lifting = Sub Dict instance (Functor f, Show1 f, Show1 g) => Lifting Show (Compose f g) where lifting = Sub Dict +#endif instance Functor f => Lifting Functor (Functor.Product f) where lifting = Sub Dict instance Foldable f => Lifting Foldable (Functor.Product f) where lifting = Sub Dict diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.6/src/Data/Constraint/Unsafe.hs new/constraints-0.8/src/Data/Constraint/Unsafe.hs --- old/constraints-0.6/src/Data/Constraint/Unsafe.hs 2015-11-10 14:16:35.000000000 +0100 +++ new/constraints-0.8/src/Data/Constraint/Unsafe.hs 2016-01-17 03:10:38.000000000 +0100 @@ -6,6 +6,9 @@ {-# LANGUAGE Rank2Types #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE Unsafe #-} +#if __GLASGOW_HASKELL__ >= 800 +{-# OPTIONS_GHC -fno-warn-redundant-constraints #-} +#endif ----------------------------------------------------------------------------- -- | -- Module : Data.Constraint.Unsafe @@ -56,10 +59,19 @@ unsafeUnderive :: Coercible n o => (o -> n) -> t n :- t o unsafeUnderive _ = unsafeCoerceConstraint + -- | Construct an Applicative instance from a Monad unsafeApplicative :: forall m a. Monad m => (Applicative m => m a) -> m a +#if __GLASGOW_HASKELL__ < 710 unsafeApplicative m = m \\ trans (unsafeCoerceConstraint :: Applicative (WrappedMonad m) :- Applicative m) ins +#else +unsafeApplicative m = m +#endif -- | Construct an Alternative instance from a MonadPlus unsafeAlternative :: forall m a. MonadPlus m => (Alternative m => m a) -> m a +#if __GLASGOW_HASKELL__ < 710 unsafeAlternative m = m \\ trans (unsafeCoerceConstraint :: Alternative (WrappedMonad m) :- Alternative m) ins +#else +unsafeAlternative m = m +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.6/src/Data/Constraint.hs new/constraints-0.8/src/Data/Constraint.hs --- old/constraints-0.6/src/Data/Constraint.hs 2015-11-10 14:16:35.000000000 +0100 +++ new/constraints-0.8/src/Data/Constraint.hs 2016-01-17 03:10:38.000000000 +0100 @@ -18,6 +18,12 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE RoleAnnotations #-} #endif +#if __GLASGOW_HASKELL__ >= 800 +{-# LANGUAGE UndecidableSuperClasses #-} +#endif +#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710 +{-# LANGUAGE NullaryTypeClasses #-} +#endif ----------------------------------------------------------------------------- -- | -- Module : Data.Constraint @@ -58,6 +64,7 @@ , weaken1, weaken2, contract , (&&&), (***) , trans, refl + , Bottom , top, bottom -- * Dict is fully faithful , mapDict @@ -79,7 +86,12 @@ #if __GLASGOW_HASKELL__ >= 707 import Data.Data #endif +#if __GLASGOW_HASKELL__ <= 710 import GHC.Prim (Constraint) +#else +import GHC.Types (Constraint) +#endif +import qualified GHC.Prim as Prim -- | Values of type @'Dict' p@ capture a dictionary for a constraint of type @p@. -- @@ -292,21 +304,14 @@ top :: a :- () top = Sub Dict -type family Ex (a :: *) (c :: Constraint) :: Constraint -type instance Ex () c = () -type instance Ex Bool c = c - -falso :: (() ~ a) :- Ex a c -falso = Sub Dict +-- | 'Any' inhabits every kind, including 'Constraint' but is uninhabited, making it impossible to define an instance. +class Prim.Any => Bottom where + no :: Dict a -- | --- A bad type coercion lets you derive any constraint you want. --- --- These are the initial arrows of the category and @(() ~ Bool)@ is the initial object --- -- This demonstrates the law of classical logic <http://en.wikipedia.org/wiki/Principle_of_explosion "ex falso quodlibet"> -bottom :: (() ~ Bool) :- c -bottom = falso +bottom :: Bottom :- a +bottom = Sub no -------------------------------------------------------------------------------- -- Dict is fully faithful @@ -375,7 +380,7 @@ instance Class () (b :=> a) where cls = Sub Dict instance Class b a => () :=> Class b a where ins = Sub Dict -instance (b :=> a) => () :=> b :=> a where ins = Sub Dict +instance (b :=> a) => () :=> (b :=> a) where ins = Sub Dict instance Class () () where cls = Sub Dict instance () :=> () where ins = Sub Dict
