constraints 0.12 → 0.13
raw patch · 5 files changed
+83/−14 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> () :: Constraint
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Bits.Bits GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Bits.Bits GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Bits.Bits GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Bits.Bits GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> Data.Bits.Bits GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Alternative GHC.Maybe.Maybe
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Alternative []
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Applicative ((->) a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Applicative (Data.Either.Either a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Applicative GHC.Maybe.Maybe
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Applicative GHC.Types.IO
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Applicative []
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor ((,) a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor ((->) a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor (Data.Either.Either a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor (Data.Functor.Const.Const a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor Data.Functor.Identity.Identity
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor GHC.Maybe.Maybe
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor GHC.Types.IO
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Functor []
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monad ((->) a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monad (Data.Either.Either a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monad Data.Functor.Identity.Identity
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monad GHC.Types.IO
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monad []
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.MonadPlus GHC.Maybe.Maybe
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.MonadPlus []
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monoid ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monoid GHC.Types.Ordering
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Base.Monoid [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 () :: Constraint Data.Constraint.:=> GHC.Classes.Eq ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq (Data.Constraint.Dict a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq (a Data.Constraint.:- b)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord (Data.Constraint.Dict a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord (a Data.Constraint.:- b)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Char
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Bounded ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Char
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Ordering
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Char
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Ordering
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Float.Floating GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Float.Floating GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Float.RealFloat GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Float.RealFloat GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Num.Num GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Num.Num GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Num.Num GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Num.Num GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Num.Num GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Num.Num GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read GHC.Types.Char
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read GHC.Types.Ordering
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Read.Read GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Fractional GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Fractional GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Integral GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Integral GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Integral GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Integral GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Real GHC.Integer.Type.Integer
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Real GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Real GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Real GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Real GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.Real GHC.Types.Word
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.RealFrac GHC.Types.Double
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Real.RealFrac GHC.Types.Float
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show ()
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show (Data.Constraint.Dict a)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show (a Data.Constraint.:- b)
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show GHC.Natural.Natural
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show GHC.Types.Bool
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show GHC.Types.Char
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show GHC.Types.Int
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show GHC.Types.Ordering
- Data.Constraint: instance () :: Constraint Data.Constraint.:=> GHC.Show.Show GHC.Types.Word
- Data.Constraint: instance (b Data.Constraint.:=> a) => () :: Constraint Data.Constraint.:=> (b Data.Constraint.:=> a)
- Data.Constraint: instance Data.Constraint.Class b a => () :: Constraint Data.Constraint.:=> Data.Constraint.Class b a
- Data.Constraint: instance forall k (a :: k) (b :: k). Data.Constraint.HasDict (a Data.Type.Equality.~ b) (a Data.Type.Equality.:~: b)
- Data.Constraint: instance forall k2 k1 (a :: k1) (b :: k2). Data.Constraint.HasDict (a GHC.Types.~~ b) (a Data.Type.Equality.:~~: b)
- Data.Constraint.Deferrable: data (:~:) (a :: k) (b :: k) :: forall k. () => k -> k -> Type
- Data.Constraint.Deferrable: data (:~~:) (a :: k1) (b :: k2) :: forall k1 k2. () => k1 -> k2 -> Type
- 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 Data.Type.Equality.~ b)
- Data.Constraint.Forall: instance (p Data.Type.Equality.~ 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 Data.Type.Equality.~ c) => Data.Constraint.Forall.InstV p c
- Data.Constraint.Forall: instance forall k1 k2 (p :: k2 -> GHC.Types.Constraint) (f :: k1 -> k2) (a :: k1). p (f a) => Data.Constraint.Forall.ComposeC p f a
- Data.Constraint.Forall: instance forall k1 k2 (p :: k2 -> GHC.Types.Constraint) (f :: k1 -> k2). Data.Constraint.Forall.Forall (Data.Constraint.Forall.ComposeC p f) => Data.Constraint.Forall.ForallF p f
- Data.Constraint.Forall: instance forall k1 k2 k3 (p :: k3 -> GHC.Types.Constraint) (t :: k1 -> k2 -> k3) (a :: k1) (b :: k2). p (t a b) => Data.Constraint.Forall.R p t a b
- Data.Constraint.Forall: instance forall k1 k2 k3 (p :: k3 -> GHC.Types.Constraint) (t :: k1 -> k2 -> k3) (a :: k1). Data.Constraint.Forall.Forall (Data.Constraint.Forall.R p t a) => Data.Constraint.Forall.Q p t a
- Data.Constraint.Forall: instance forall k1 k2 k3 k4 (p :: k4 -> GHC.Types.Constraint) (t :: (k1 -> k2) -> k3 -> k4). Data.Constraint.Forall.Forall (Data.Constraint.Forall.Q p t) => Data.Constraint.Forall.ForallT p t
- Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting2 GHC.Arr.Ix (,)
- Data.Constraint.Lifting: instance GHC.Arr.Ix a => Data.Constraint.Lifting.Lifting GHC.Arr.Ix ((,) a)
+ Data.Constraint: implied :: forall a b. (a => b) => a :- b
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> (() :: Constraint)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> Data.Bits.Bits GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> Data.Bits.Bits GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> Data.Bits.Bits GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> Data.Bits.Bits GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> Data.Bits.Bits GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Alternative GHC.Maybe.Maybe
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Alternative []
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Applicative ((->) a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Applicative (Data.Either.Either a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Applicative GHC.Maybe.Maybe
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Applicative GHC.Types.IO
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Applicative []
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor ((,) a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor ((->) a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor (Data.Either.Either a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor (Data.Functor.Const.Const a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor Data.Functor.Identity.Identity
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor GHC.Maybe.Maybe
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor GHC.Types.IO
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Functor []
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monad ((->) a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monad (Data.Either.Either a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monad Data.Functor.Identity.Identity
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monad GHC.Types.IO
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monad []
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.MonadPlus GHC.Maybe.Maybe
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.MonadPlus []
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monoid ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monoid GHC.Types.Ordering
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Base.Monoid [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 (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq (Data.Constraint.Dict a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq (a Data.Constraint.:- b)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Eq GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord (Data.Constraint.Dict a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord (a Data.Constraint.:- b)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Char
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Classes.Ord GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Bounded ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Char
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Ordering
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Bounded GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Char
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Ordering
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Enum.Enum GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Float.Floating GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Float.Floating GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Float.RealFloat GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Float.RealFloat GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Num.Num GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Num.Num GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Num.Num GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Num.Num GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Num.Num GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Num.Num GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read GHC.Types.Char
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read GHC.Types.Ordering
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Read.Read GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Fractional GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Fractional GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Integral GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Integral GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Integral GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Integral GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Real GHC.Integer.Type.Integer
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Real GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Real GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Real GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Real GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.Real GHC.Types.Word
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.RealFrac GHC.Types.Double
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Real.RealFrac GHC.Types.Float
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show ()
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show (Data.Constraint.Dict a)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show (a Data.Constraint.:- b)
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show GHC.Natural.Natural
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show GHC.Types.Bool
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show GHC.Types.Char
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show GHC.Types.Int
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show GHC.Types.Ordering
+ Data.Constraint: instance (() :: Constraint) Data.Constraint.:=> GHC.Show.Show GHC.Types.Word
+ Data.Constraint: instance (b Data.Constraint.:=> a) => (() :: Constraint) Data.Constraint.:=> (b Data.Constraint.:=> a)
+ Data.Constraint: instance Data.Constraint.Class b a => (() :: Constraint) Data.Constraint.:=> Data.Constraint.Class b a
+ Data.Constraint: instance forall k (a :: k) (b :: k). Data.Constraint.HasDict (a GHC.Types.~ b) (a Data.Type.Equality.:~: b)
+ Data.Constraint: instance forall k1 k2 (a :: k1) (b :: k2). Data.Constraint.HasDict (a GHC.Types.~~ b) (a Data.Type.Equality.:~~: b)
+ Data.Constraint.Deferrable: data (a :: k) :~: (b :: k)
+ 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 GHC.Types.~ b)
+ Data.Constraint.Forall: instance (p GHC.Types.~ 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 GHC.Types.~ c) => Data.Constraint.Forall.InstV p c
+ Data.Constraint.Forall: instance forall k2 k1 (p :: k2 -> GHC.Types.Constraint) (f :: k1 -> k2) (a :: k1). p (f a) => Data.Constraint.Forall.ComposeC p f a
+ Data.Constraint.Forall: instance forall k2 k1 (p :: k2 -> GHC.Types.Constraint) (f :: k1 -> k2). Data.Constraint.Forall.Forall (Data.Constraint.Forall.ComposeC p f) => Data.Constraint.Forall.ForallF p f
+ Data.Constraint.Forall: instance forall k3 k1 k2 (p :: k3 -> GHC.Types.Constraint) (t :: k1 -> k2 -> k3) (a :: k1) (b :: k2). p (t a b) => Data.Constraint.Forall.R p t a b
+ Data.Constraint.Forall: instance forall k3 k1 k2 (p :: k3 -> GHC.Types.Constraint) (t :: k1 -> k2 -> k3) (a :: k1). Data.Constraint.Forall.Forall (Data.Constraint.Forall.R p t a) => Data.Constraint.Forall.Q p t a
+ Data.Constraint.Forall: instance forall k4 k1 k2 k3 (p :: k4 -> GHC.Types.Constraint) (t :: (k1 -> k2) -> k3 -> k4). Data.Constraint.Forall.Forall (Data.Constraint.Forall.Q p t) => Data.Constraint.Forall.ForallT p t
+ Data.Constraint.Lifting: instance Data.Constraint.Lifting.Lifting2 GHC.Ix.Ix (,)
+ Data.Constraint.Lifting: instance GHC.Ix.Ix a => Data.Constraint.Lifting.Lifting GHC.Ix.Ix ((,) a)
+ Data.Constraint.Symbol: infixr 5 ++
+ Data.Constraint.Symbol: type (m :: Symbol) ++ (n :: Symbol) = AppendSymbol m n
- Data.Constraint.Deferrable: [HRefl] :: forall k1 k2 (a :: k1) (b :: k2). () => a :~~: a
+ Data.Constraint.Deferrable: [HRefl] :: forall k1 (a :: k1). a :~~: a
- Data.Constraint.Deferrable: [Refl] :: forall k (a :: k) (b :: k). () => a :~: a
+ Data.Constraint.Deferrable: [Refl] :: forall k (a :: k). a :~: a
- Data.Constraint.Symbol: appendAssociates :: forall a b c. Dict (((a ++ b) ++ c) ~ (a ++ (b ++ c)))
+ Data.Constraint.Symbol: appendAssociates :: forall a b c. Dict (AppendSymbol (AppendSymbol a b) c ~ AppendSymbol a (AppendSymbol b c))
- Data.Constraint.Symbol: appendSymbol :: (KnownSymbol a, KnownSymbol b) :- KnownSymbol (a ++ b)
+ Data.Constraint.Symbol: appendSymbol :: (KnownSymbol a, KnownSymbol b) :- KnownSymbol (AppendSymbol a b)
- Data.Constraint.Symbol: appendUnit1 :: forall a. Dict (("" ++ a) ~ a)
+ Data.Constraint.Symbol: appendUnit1 :: forall a. Dict (AppendSymbol "" a ~ a)
- Data.Constraint.Symbol: appendUnit2 :: forall a. Dict ((a ++ "") ~ a)
+ Data.Constraint.Symbol: appendUnit2 :: forall a. Dict (AppendSymbol a "" ~ a)
- Data.Constraint.Symbol: takeAppendDrop :: forall n a. Dict ((Take n a ++ Drop n a) ~ a)
+ Data.Constraint.Symbol: takeAppendDrop :: forall n a. Dict (AppendSymbol (Take n a) (Drop n a) ~ a)
- Data.Constraint.Unsafe: class a ~R# b => Coercible (a :: k0) (b :: k0)
+ Data.Constraint.Unsafe: class a ~R# b => Coercible (a :: k) (b :: k)
Files
- CHANGELOG.markdown +28/−0
- README.markdown +1/−1
- constraints.cabal +7/−3
- src/Data/Constraint.hs +19/−1
- src/Data/Constraint/Symbol.hs +28/−9
CHANGELOG.markdown view
@@ -1,3 +1,31 @@+0.13 [2021.02.17]+-----------------+* `Data.Constraint.Symbol` now reexports the `GHC.TypeLits.AppendSymbol` type+ family from recent versions of `base` (or, on old versions of `base`, it+ defines a backwards-compatibile version of `AppendSymbol`). The existing+ `(++)` type family for `Data.Constraint.Symbol` is now a synonym for+ `AppendSymbol`.++ This is technically a breaking change, as `(++)` was previously defined like+ so:++ ```hs+ type family (++) :: Symbol -> Symbol -> Symbol+ ```++ This meant that `(++)` could be partially applied. However, for compatibility+ with the way that `AppendSymbol` is defined, `(++)` is now defined like so:++ ```hs+ type m ++ n = AppendSymbol m n+ ```++ As a result, `(++)` can no longer be partially applied.+* Make the `(++)` type family in `Data.Constraint.Symbol` be `infixr 5`.+* Add `implied :: (a => b) -> (a :- b)` to `Data.Constraint`, which converts+ a quantified constraint into an entailment. This is only available when+ compiled with GHC 8.6 or later.+ 0.12 [2020.02.03] ----------------- * Relax the type signature for `divideTimes`:
README.markdown view
@@ -1,7 +1,7 @@ constraints =========== -[](https://hackage.haskell.org/package/constraints) [](http://travis-ci.org/ekmett/constraints)+[](https://hackage.haskell.org/package/constraints) [](https://github.com/ekmett/constraints/actions?query=workflow%3AHaskell-CI) This package provides data types and classes for manipulating the 'ConstraintKinds' exposed by GHC in 7.4.
constraints.cabal view
@@ -1,6 +1,6 @@ name: constraints category: Constraints-version: 0.12+version: 0.13 license: BSD2 cabal-version: >= 1.10 license-file: LICENSE@@ -23,7 +23,8 @@ , GHC == 8.2.2 , GHC == 8.4.4 , GHC == 8.6.5- , GHC == 8.8.1+ , GHC == 8.8.3+ , GHC == 8.10.1 extra-source-files: README.markdown , CHANGELOG.markdown @@ -54,10 +55,11 @@ ghc-prim, hashable >= 1.2 && < 1.4, mtl >= 2.1.2 && < 2.3,- semigroups >= 0.17 && < 0.20, transformers >= 0.3.0.0 && < 0.6, transformers-compat >= 0.5 && < 1, type-equality >= 1 && < 2+ if impl(ghc < 8.0)+ build-depends: semigroups >= 0.17 && < 0.20 exposed-modules: Data.Constraint@@ -72,6 +74,8 @@ Data.Constraint.Symbol ghc-options: -Wall+ if impl(ghc >= 8.6)+ ghc-options: -Wno-star-is-type test-suite spec type: exitcode-stdio-1.0
src/Data/Constraint.hs view
@@ -27,6 +27,9 @@ #if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710 {-# LANGUAGE NullaryTypeClasses #-} #endif+#if __GLASGOW_HASKELL__ >= 806+{-# LANGUAGE QuantifiedConstraints #-}+#endif ----------------------------------------------------------------------------- -- | -- Module : Data.Constraint@@ -71,6 +74,9 @@ , strengthen1, strengthen2 , (&&&), (***) , trans, refl+#if __GLASGOW_HASKELL__ >= 806+ , implied+#endif , Bottom(no) , top, bottom -- * Dict is fully faithful@@ -124,7 +130,7 @@ -- captures a dictionary that proves we have an: -- -- @--- instance 'Eq' 'Int+-- instance 'Eq' 'Int' -- @ -- -- Pattern matching on the 'Dict' constructor will bring this instance into scope.@@ -323,6 +329,18 @@ -- If we view @(':-')@ as a Constraint-indexed category, then this is 'id' refl :: a :- a refl = Sub Dict++--------------------------------------------------------------------------------+-- QuantifiedConstraints+--------------------------------------------------------------------------------++#if __GLASGOW_HASKELL__ >= 806+-- | Convert a quantified constraint into an entailment.+--+-- Only available on GHC 8.6 or later.+implied :: forall a b. (a => b) => a :- b+implied = Sub (Dict :: Dict b)+#endif -------------------------------------------------------------------------------- -- (,) is a Bifunctor
src/Data/Constraint/Symbol.hs view
@@ -7,11 +7,13 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-}+{-# LANGUAGE CPP #-} -- | Utilities for working with 'KnownSymbol' constraints. -- -- This module is only available on GHC 8.0 or later. module Data.Constraint.Symbol- ( type (++)+ ( type AppendSymbol+ , type (++) , type Take , type Drop , type Length@@ -41,7 +43,14 @@ import GHC.TypeLits import Unsafe.Coerce -type family (++) :: Symbol -> Symbol -> Symbol where+#if !(MIN_VERSION_base(4,10,0))+type family AppendSymbol (m :: Symbol) (n :: Symbol) :: Symbol+#endif++-- | An infix synonym for 'AppendSymbol'.+type (m :: Symbol) ++ (n :: Symbol) = AppendSymbol m n+infixr 5 +++ type family Take :: Nat -> Symbol -> Symbol where type family Drop :: Nat -> Symbol -> Symbol where type family Length :: Symbol -> Nat where@@ -64,16 +73,26 @@ -- axioms and operations -appendSymbol :: (KnownSymbol a, KnownSymbol b) :- KnownSymbol (a ++ b)+appendSymbol :: (KnownSymbol a, KnownSymbol b) :- KnownSymbol (AppendSymbol a b) appendSymbol = magicSSS (++) -appendUnit1 :: forall a. Dict (("" ++ a) ~ a)-appendUnit1 = axiom+appendUnit1 :: forall a. Dict (AppendSymbol "" a ~ a)+appendUnit1 =+#if MIN_VERSION_base(4,10,0)+ Dict+#else+ axiom+#endif -appendUnit2 :: forall a. Dict ((a ++ "") ~ a)-appendUnit2 = axiom+appendUnit2 :: forall a. Dict (AppendSymbol a "" ~ a)+appendUnit2 =+#if MIN_VERSION_base(4,10,0)+ Dict+#else+ axiom+#endif -appendAssociates :: forall a b c. Dict (((a ++ b) ++ c) ~ (a ++ (b ++ c)))+appendAssociates :: forall a b c. Dict (AppendSymbol (AppendSymbol a b) c ~ AppendSymbol a (AppendSymbol b c)) appendAssociates = axiom takeSymbol :: forall n a. (KnownNat n, KnownSymbol a) :- KnownSymbol (Take n a)@@ -82,7 +101,7 @@ dropSymbol :: forall n a. (KnownNat n, KnownSymbol a) :- KnownSymbol (Drop n a) dropSymbol = magicNSS drop -takeAppendDrop :: forall n a. Dict (Take n a ++ Drop n a ~ a)+takeAppendDrop :: forall n a. Dict (AppendSymbol (Take n a) (Drop n a) ~ a) takeAppendDrop = axiom lengthSymbol :: forall a. KnownSymbol a :- KnownNat (Length a)