1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
|
0.14.2 [2024.05.12]
-------------------
* Re-export `Log2` from `Data.Constraint.Nat`.
* Add `log2Nat` and `log2Pow` to `Data.Constraint.Nat`.
0.14.1 [2024.04.29]
-------------------
* Remove an unused dependency on the `type-equality` library.
0.14 [2023.10.11]
-----------------
* Drop support for GHCs older than 8.6.
* The `forall` function in `Data.Constraint.Forall` has been renamed to
`forall_`, since a future version of GHC will make the use of `forall` as
an identifier an error.
* Implement `Data.Constraint.Forall` using `QuantifiedConstraints`.
* Remove `Lifting` instances for `ErrorT` and `ListT`, which were removed
in `transformers-0.6.*`.
* Add a `c => Boring (Dict c)` instance.
* Add the `Data.Constraint.Char` module, which contains utilities for working
with `KnownChar` constraints. This module is only available on GHC 9.2 or
later.
* Add `unsafeAxiom` to `Data.Constraint.Unsafe`.
* Add `unsafeSChar`, `unsafeSNat`, and `unsafeSSymbol` to
`Data.Constraint.Unsafe` when building with `base-4.18` (GHC 9.6) or later.
0.13.4 [2022.05.19]
-------------------
* Correct the CPP introduced in `constraints-0.13.3` such that it works when
building with `mtl-2.3.*` or later combined with `transformers < 0.6`.
0.13.3 [2022.01.31]
-------------------
* Allow building with `transformers-0.6.*` and `mtl-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.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`:
```diff
-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`:
```diff
-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 `diviesDef` can be (partially) recovered by defining
it in terms of the new `dividesDef`:
```hs
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-equality` compatibility library so that `(:~~:)` may be
used when compiling this library with GHC 8.0. This avoids having to redefine
`(:~~:)` directly in the internals of `constraints` itself.
0.11.1 [2019.08.27]
-------------------
* Make `Data.Constraint.Deferrable.UnsatisfiedConstraint` a newtype.
0.11 [2019.05.10]
-----------------
* Introduce a `HasDict` type class for types that witness evidence of
constraints, such as `Dict`, `(:-)`, `Coercion`, `(:~:)`, `(:~~:)`, and
`TypeRep`.
* Generalize the types of `withDict` and `(\\)` to be polymorphic over
any `HasDict` instance.
* Add `type (⊢) = (:-)`.
* Fix unsafe mistakes in the statements of `dividesDef` and `timesDiv` in
`Data.Constraint.Nat`.
* Make the implementations of `Min` and `Max` reduce on more inputs in
`Data.Constraint.Nat`.
* Add `minusNat` and `minusZero` functions to `Data.Constraint.Nat`.
* Support `hashable-1.3.*` and `semigroups-0.19.*`.
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`):
* Add a `Semigroup` instance for `Dict`
* Add the appropriate `(:=>)` instances involving `Semigroup`, and change the
`Class () (Monoid a)` instance to `Class (Semigroup a) (Monoid a)` when
`base` is recent enough
* Add the appropriate `Lifting(2)` instances involving `Semigroup`
* `Data.Constraint.Nat` now reexports the `Div` and `Mod` type families from
`GHC.TypeLits` on `base-4.11` or later
* Fix the type signature of `maxCommutes`
* Export the `no` method of `Bottom`
* Add `NFData` instances for `Dict` and `(:-)`
0.9.1
-----
* Correct an improper use of `unsafeCoerce` in the internals of
`Data.Constraint.Nat` and `Data.Constraint.Symbol`
* Correctly identify the mismatched types when you defer an unsatisfiable
equality constraint through `Data.Constraint.Deferrable`
* Re-export the `(:~~:)` defined in `base` from `Data.Constraint.Deferred` with
GHC 8.2 or later
* Add several new `(:=>)` instances for `Bits`, `Identity`, `Const`, `Natural`,
`IO`, and `Word`.
* Modernize some existing `Class` and `(:=>)` instances to reflect the fact
that `Applicative` is now a superclass of `Monad` on recent versions of
`base`.
0.9
---
* Changes to `Data.Constraint`:
* Add `strengthen1` and `strengthen2`
* Changes to `Data.Constraint.Deferrable`:
* Add a `Deferrable ()` instance
* The `Deferrable (a ~ b)` instance now shows the `TypeRep`s of `a` and `b`
when a type mismatch error is thrown
* Add `defer_` and `deferEither_`, counterparts to `defer` and `deferEither`
which do not require proxy arguments
* Enable `PolyKinds`. This allows the `Deferrable (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 a
`Deferrable (a ~~ b)` instance on GHC 8.0 or later
* Changes to `Data.Constraint.Forall`:
* Implement `ForallF` and `ForallT` in terms of `Forall`
* Add `ForallV` and `InstV` (supporting a variable number of parameters)
* Add a `forall` combinator
* Introduce `Data.Constraint.Nat` and `Data.Constraint.Symbol`, which contain
utilities for working with `KnownNat` and `KnownSymbol` constraints,
respectively. These modules are only available on GHC 8.0 or later.
0.8
-----
* GHC 8 compatibility
* `transformers` 0.5 compatibility
* `binary` 0.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](https://ghc.haskell.org/trac/ghc/ticket/7642).
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 define `unsafeCoerce`!
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 `mapDict` and `unmapDict`.
* Added a lot of documentation.
0.4
---
* `Typeable` and `Data`. The `Data` instance 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](http://github.com/ekmett/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`
|