Changelog for constraints-0.14.2
0.14.2 [2024.05.12]
- Re-export 
Log2fromData.Constraint.Nat. - Add 
log2Natandlog2PowtoData.Constraint.Nat. 
0.14.1 [2024.04.29]
- Remove an unused dependency on the 
type-equalitylibrary. 
0.14 [2023.10.11]
- Drop support for GHCs older than 8.6.
 - The 
forallfunction inData.Constraint.Forallhas been renamed toforall_, since a future version of GHC will make the use offorallas an identifier an error. - Implement 
Data.Constraint.ForallusingQuantifiedConstraints. - Remove 
Liftinginstances forErrorTandListT, which were removed intransformers-0.6.*. - Add a 
c => Boring (Dict c)instance. - Add the 
Data.Constraint.Charmodule, which contains utilities for working withKnownCharconstraints. This module is only available on GHC 9.2 or later. - Add 
unsafeAxiomtoData.Constraint.Unsafe. - Add 
unsafeSChar,unsafeSNat, andunsafeSSymboltoData.Constraint.Unsafewhen building withbase-4.18(GHC 9.6) or later. 
0.13.4 [2022.05.19]
- Correct the CPP introduced in 
constraints-0.13.3such that it works when building withmtl-2.3.*or later combined withtransformers < 0.6. 
0.13.3 [2022.01.31]
- Allow building with 
transformers-0.6.*andmtl-2.3.*. 
0.13.2 [2021.11.10]
- Allow building on GHC HEAD.
 
0.13.1 [2021.10.31]
- Allow building with GHC 9.2.
 
0.13 [2021.02.17]
- 
Data.Constraint.Symbolnow reexports theGHC.TypeLits.AppendSymboltype family from recent versions ofbase(or, on old versions ofbase, it defines a backwards-compatibile version ofAppendSymbol). The existing(++)type family forData.Constraint.Symbolis now a synonym forAppendSymbol.This is technically a breaking change, as
(++)was previously defined like so:type family (++) :: Symbol -> Symbol -> SymbolThis meant that
(++)could be partially applied. However, for compatibility with the way thatAppendSymbolis defined,(++)is now defined like so:type m ++ n = AppendSymbol m nAs a result,
(++)can no longer be partially applied. - 
Make the
(++)type family inData.Constraint.Symbolbeinfixr 5. - 
Add
implied :: (a => b) -> (a :- b)toData.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:-dividesTimes :: (Divides a b, Divides a c) :- Divides a (b * c) +dividesTimes :: Divides a b :- Divides a (b * c) - 
Simplify the type signature of
dividesDef:-dividesDef :: forall a b. Divides a b :- ((a * Div b a) ~ b) +dividesDef :: forall a b. Divides a b :- (Mod b a ~ 0)The original type of
diviesDefcan be (partially) recovered by defining it in terms of the newdividesDef:dividesDef' :: forall a b. (1 <= a, Divides a b) :- ((a * Div b a) ~ b) dividesDef' = Sub $ case (dividesDef @a @b, euclideanNat @a @b) of (Sub Dict, Sub Dict) -> Dict 
0.11.2 [2019.09.06]
- Depend on the 
type-equalitycompatibility library so that(:~~:)may be used when compiling this library with GHC 8.0. This avoids having to redefine(:~~:)directly in the internals ofconstraintsitself. 
0.11.1 [2019.08.27]
- Make 
Data.Constraint.Deferrable.UnsatisfiedConstrainta newtype. 
0.11 [2019.05.10]
- Introduce a 
HasDicttype class for types that witness evidence of constraints, such asDict,(:-),Coercion,(:~:),(:~~:), andTypeRep. - Generalize the types of 
withDictand(\\)to be polymorphic over anyHasDictinstance. - Add 
type (⊢) = (:-). - Fix unsafe mistakes in the statements of 
dividesDefandtimesDivinData.Constraint.Nat. - Make the implementations of 
MinandMaxreduce on more inputs inData.Constraint.Nat. - Add 
minusNatandminusZerofunctions toData.Constraint.Nat. - Support 
hashable-1.3.*andsemigroups-0.19.*. 
0.10.1 [2018.07.02]
- Allow building with GHC 8.6.
 - Add three axioms about 
(+)and(-)toData.Constraint.Nat. 
0.10
- Adapt to the 
Semigroup–MonoidProposal (introduced inbase-4.11):- Add a 
Semigroupinstance forDict - Add the appropriate 
(:=>)instances involvingSemigroup, and change theClass () (Monoid a)instance toClass (Semigroup a) (Monoid a)whenbaseis recent enough - Add the appropriate 
Lifting(2)instances involvingSemigroup 
 - Add a 
 Data.Constraint.Natnow reexports theDivandModtype families fromGHC.TypeLitsonbase-4.11or later- Fix the type signature of 
maxCommutes - Export the 
nomethod ofBottom - Add 
NFDatainstances forDictand(:-) 
0.9.1
- Correct an improper use of 
unsafeCoercein the internals ofData.Constraint.NatandData.Constraint.Symbol - Correctly identify the mismatched types when you defer an unsatisfiable
equality constraint through 
Data.Constraint.Deferrable - Re-export the 
(:~~:)defined inbasefromData.Constraint.Deferredwith GHC 8.2 or later - Add several new 
(:=>)instances forBits,Identity,Const,Natural,IO, andWord. - Modernize some existing 
Classand(:=>)instances to reflect the fact thatApplicativeis now a superclass ofMonadon recent versions ofbase. 
0.9
- Changes to 
Data.Constraint:- Add 
strengthen1andstrengthen2 
 - Add 
 - Changes to 
Data.Constraint.Deferrable:- Add a 
Deferrable ()instance - The 
Deferrable (a ~ b)instance now shows theTypeReps ofaandbwhen a type mismatch error is thrown - Add 
defer_anddeferEither_, counterparts todeferanddeferEitherwhich do not require proxy arguments - Enable 
PolyKinds. This allows theDeferrable (a ~ b)instance to be polykinded on all supported versions of GHC except 7.10, where the kinds must be*due to an old GHC bug - Introduce a heterogeneous equality type 
(:~~:), and use it to define aDeferrable (a ~~ b)instance on GHC 8.0 or later 
 - Add a 
 - Changes to 
Data.Constraint.Forall:- Implement 
ForallFandForallTin terms ofForall - Add 
ForallVandInstV(supporting a variable number of parameters) - Add a 
forallcombinator 
 - Implement 
 - Introduce 
Data.Constraint.NatandData.Constraint.Symbol, which contain utilities for working withKnownNatandKnownSymbolconstraints, respectively. These modules are only available on GHC 8.0 or later. 
0.8
- GHC 8 compatibility
 transformers0.5 compatibilitybinary0.8 compatibility- Dropped support for GHC 7.6 in favor of a nicer Bottom representation.
 
0.7
- Found a nicer encoding of the initial object in the category of constraints using a nullary constraint.
 
0.6.1
- Remove the need for closed type families from the new 
Forall. 
0.6
- Completely redesigned 
Data.Constraint.Forall. The old design is unsound and can be abused to defineunsafeCoerce! The new design requires closed type families, so this module now requires GHC 7.8+ 
0.5.1
- Added 
Data.Constraint.Deferrable. 
0.5
- Added 
Data.Constraint.Lifting. 
0.4.1.3
- Acknowledge we actually need at least base 4.5
 
0.4.1.2
- Restore support for building on older GHCs
 
0.4.1.1
- Minor documentation fixes.
 
0.4.1
- Added 
mapDictandunmapDict. - Added a lot of documentation.
 
0.4
TypeableandData. TheDatainstance for(:-)is a conservative approximation that avoids having to turn (:-) into a cartesian closed category. If it becomes a pain point for users, I know how to do that, and have done so in other libraries -- see hask, but I'm hesitant to bring such heavy machinery to bear and it isn't clear how to do it in a way that is compatible with those other libraries.
0.3.5
- Explicit role annotations
 
0.3.4.1
- Fixed build failures.
 - Fixed an unused import warning on older GHCs.
 
0.3.4
- Added 
bottom