typelits-witnesses 0.2.1.0 → 0.2.2.0
raw patch · 3 files changed
+29/−16 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- GHC.TypeLits.List: [:<#] :: (KnownNat n, KnownNats ns) => !(Proxy n) -> !(NatList ns) -> NatList (n : ns)
- GHC.TypeLits.List: [:<$] :: (KnownSymbol s, KnownSymbols ss) => !(Proxy s) -> !(SymbolList ss) -> SymbolList (s : ss)
- GHC.TypeLits.List: [SomeNats] :: KnownNats ns => !(NatList ns) -> SomeNats
- GHC.TypeLits.List: [SomeSymbols] :: KnownSymbols ss => !(SymbolList ss) -> SomeSymbols
- GHC.TypeLits.List: [ØNL] :: NatList '[]
- GHC.TypeLits.List: [ØSL] :: SymbolList '[]
- GHC.TypeLits.Witnesses: infixl 6 %-
- GHC.TypeLits.Witnesses: infixl 7 %*
- GHC.TypeLits.Witnesses: infixr 8 %^
+ GHC.TypeLits.List: (:<#) :: !(Proxy n) -> !(NatList ns) -> NatList (n : ns)
+ GHC.TypeLits.List: (:<$) :: !(Proxy s) -> !(SymbolList ss) -> SymbolList (s : ss)
+ GHC.TypeLits.List: SomeNats :: !(NatList ns) -> SomeNats
+ GHC.TypeLits.List: SomeSymbols :: !(SymbolList ss) -> SomeSymbols
+ GHC.TypeLits.List: ØNL :: NatList '[]
+ GHC.TypeLits.List: ØSL :: SymbolList '[]
- GHC.TypeLits.List: elimNatList :: forall p ns. p '[] -> (forall m ms. (KnownNat m, KnownNats ms) => Proxy m -> p ms -> p (m : ms)) -> NatList ns -> p ns
+ GHC.TypeLits.List: elimNatList :: p '[] -> (forall m ms. (KnownNat m, KnownNats ms) => Proxy m -> p ms -> p (m : ms)) -> NatList ns -> p ns
- GHC.TypeLits.List: elimSymbolList :: forall p ss. p '[] -> (forall t ts. (KnownSymbol t, KnownSymbols ts) => Proxy t -> p ts -> p (t : ts)) -> SymbolList ss -> p ss
+ GHC.TypeLits.List: elimSymbolList :: p '[] -> (forall t ts. (KnownSymbol t, KnownSymbols ts) => Proxy t -> p ts -> p (t : ts)) -> SymbolList ss -> p ss
- GHC.TypeLits.List: sameNats :: (KnownNats ns, KnownNats ms) => NatList ns -> NatList ms -> Maybe (ns :~: ms)
+ GHC.TypeLits.List: sameNats :: NatList ns -> NatList ms -> Maybe (ns :~: ms)
- GHC.TypeLits.List: sameSymbols :: (KnownSymbols ns, KnownSymbols ms) => SymbolList ns -> SymbolList ms -> Maybe (ns :~: ms)
+ GHC.TypeLits.List: sameSymbols :: SymbolList ns -> SymbolList ms -> Maybe (ns :~: ms)
- GHC.TypeLits.List: traverseNatList :: forall f ns. Applicative f => (forall n. KnownNat n => Proxy n -> f SomeNat) -> NatList ns -> f SomeNats
+ GHC.TypeLits.List: traverseNatList :: Applicative f => (forall n. KnownNat n => Proxy n -> f SomeNat) -> NatList ns -> f SomeNats
- GHC.TypeLits.List: traverseNatList' :: forall f. Applicative f => (SomeNat -> f SomeNat) -> SomeNats -> f SomeNats
+ GHC.TypeLits.List: traverseNatList' :: Applicative f => (SomeNat -> f SomeNat) -> SomeNats -> f SomeNats
- GHC.TypeLits.List: traverseNatList_ :: forall f a ns. Applicative f => (forall n. KnownNat n => Proxy n -> f a) -> NatList ns -> f ()
+ GHC.TypeLits.List: traverseNatList_ :: Applicative f => (forall n. KnownNat n => Proxy n -> f a) -> NatList ns -> f ()
- GHC.TypeLits.List: traverseSymbolList :: forall f ss. Applicative f => (forall s. KnownSymbol s => Proxy s -> f SomeSymbol) -> SymbolList ss -> f SomeSymbols
+ GHC.TypeLits.List: traverseSymbolList :: Applicative f => (forall s. KnownSymbol s => Proxy s -> f SomeSymbol) -> SymbolList ss -> f SomeSymbols
- GHC.TypeLits.List: traverseSymbolList' :: forall f. Applicative f => (SomeSymbol -> f SomeSymbol) -> SomeSymbols -> f SomeSymbols
+ GHC.TypeLits.List: traverseSymbolList' :: Applicative f => (SomeSymbol -> f SomeSymbol) -> SomeSymbols -> f SomeSymbols
- GHC.TypeLits.List: traverseSymbolList_ :: forall f ss. Applicative f => (forall s a. KnownSymbol s => Proxy s -> f a) -> SymbolList ss -> f ()
+ GHC.TypeLits.List: traverseSymbolList_ :: Applicative f => (forall s a. KnownSymbol s => Proxy s -> f a) -> SymbolList ss -> f ()
- GHC.TypeLits.Witnesses: (%*) :: forall n m. Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n * m))
+ GHC.TypeLits.Witnesses: (%*) :: Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n * m))
- GHC.TypeLits.Witnesses: (%+) :: forall n m. Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n + m))
+ GHC.TypeLits.Witnesses: (%+) :: Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n + m))
- GHC.TypeLits.Witnesses: (%-) :: forall n m. Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n - m))
+ GHC.TypeLits.Witnesses: (%-) :: Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n - m))
- GHC.TypeLits.Witnesses: (%^) :: forall n m. Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n ^ m))
+ GHC.TypeLits.Witnesses: (%^) :: Dict (KnownNat n) -> Dict (KnownNat m) -> Dict (KnownNat (n ^ m))
- GHC.TypeLits.Witnesses: dictNatVal :: forall n. Dict (KnownNat n) -> Integer
+ GHC.TypeLits.Witnesses: dictNatVal :: Dict (KnownNat n) -> Integer
- GHC.TypeLits.Witnesses: entailAdd :: forall n m. (KnownNat n, KnownNat m) :- KnownNat (n + m)
+ GHC.TypeLits.Witnesses: entailAdd :: (KnownNat n, KnownNat m) :- KnownNat (n + m)
- GHC.TypeLits.Witnesses: entailExp :: forall n m. (KnownNat n, KnownNat m) :- KnownNat (n ^ m)
+ GHC.TypeLits.Witnesses: entailExp :: (KnownNat n, KnownNat m) :- KnownNat (n ^ m)
- GHC.TypeLits.Witnesses: entailMul :: forall n m. (KnownNat n, KnownNat m) :- KnownNat (n * m)
+ GHC.TypeLits.Witnesses: entailMul :: (KnownNat n, KnownNat m) :- KnownNat (n * m)
- GHC.TypeLits.Witnesses: entailSub :: forall n m. (KnownNat n, KnownNat m) :- KnownNat (n - m)
+ GHC.TypeLits.Witnesses: entailSub :: (KnownNat n, KnownNat m) :- KnownNat (n - m)
Files
- CHANGELOG.md +26/−11
- src/GHC/TypeLits/List.hs +2/−4
- typelits-witnesses.cabal +1/−1
CHANGELOG.md view
@@ -1,12 +1,22 @@-0.2.1.0-=======+Version 0.2.2.0+===============++<https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.2.0>++* Removed redundant `KnownNats` and `KnownSymbols` constraints for `sameNats`+ and `sameSymbols`.++Version 0.2.1.0+===============+ <https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.1.0> * Added "eliminators", a staple of dependently typed programming, for `NatList` and `SymbolList`. -0.2.0.0-=======+Version 0.2.0.0+===============+ <https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.0.0> * **Breaking**: Changed the name of `someNatsVal'` to `someNatsValPos`, to@@ -17,8 +27,9 @@ `reifyNats` should be the safe one, but its connection to `reifyNat` from the *reflection* package is very strong and worth preserving, I think. -0.1.2.0-=======+Version 0.1.2.0+===============+ <https://github.com/mstksg/typelits-witnesses/releases/tag/v0.1.2.0> * Added `mapNatList'` and `mapSymbolList'` companions to `mapNatList` and@@ -30,21 +41,25 @@ `sameSymbol`. They provide witnesses to GHC that `KnownNat`s passed in are both the same. -=======+Version 0.1.1.0+===============+ <https://github.com/mstksg/typelits-witnesses/releases/tag/v0.1.1.0> * Added strict fields to `NatList`, `SomeNats`, `SymbolList`, and `SomeSymbols`. It really doesn't make any sense for them to be lazy. -0.1.0.1-=======+Version 0.1.0.1+===============+ <https://github.com/mstksg/typelits-witnesses/releases/tag/v0.1.0.1> * Added README to the cabal package as an extra source file, for viewing on Hackage. -0.1.0.0-=======+Version 0.1.0.0+===============+ <https://github.com/mstksg/typelits-witnesses/releases/tag/v0.1.0.0> * Initial version.
src/GHC/TypeLits/List.hs view
@@ -259,8 +259,7 @@ -- Nothing -> -- in this branch, they aren't -- @ sameNats- :: (KnownNats ns, KnownNats ms)- => NatList ns+ :: NatList ns -> NatList ms -> Maybe (ns :~: ms) sameNats = \case@@ -435,8 +434,7 @@ -- Nothing -> -- in this branch, they aren't -- @ sameSymbols- :: (KnownSymbols ns, KnownSymbols ms)- => SymbolList ns+ :: SymbolList ns -> SymbolList ms -> Maybe (ns :~: ms) sameSymbols = \case
typelits-witnesses.cabal view
@@ -1,5 +1,5 @@ name: typelits-witnesses-version: 0.2.1.0+version: 0.2.2.0 synopsis: Existential witnesses, singletons, and classes for operations on GHC TypeLits description: Provides witnesses for 'KnownNat' and 'KnownSymbol' instances for various operations on GHC TypeLits - in