typelits-witnesses 0.4.0.0 → 0.4.0.1
raw patch · 4 files changed
+31/−14 lines, 4 filesdep ~basedep ~dependent-sumPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, dependent-sum
API changes (from Hackage documentation)
- GHC.TypeLits.Witnesses: instance Data.GADT.Compare.GCompare GHC.TypeLits.Witnesses.SNat
- GHC.TypeLits.Witnesses: instance Data.GADT.Compare.GCompare GHC.TypeLits.Witnesses.SSymbol
- GHC.TypeLits.Witnesses: instance Data.GADT.Compare.GEq GHC.TypeLits.Witnesses.SNat
- GHC.TypeLits.Witnesses: instance Data.GADT.Compare.GEq GHC.TypeLits.Witnesses.SSymbol
- GHC.TypeLits.Witnesses: instance Data.GADT.Show.GShow GHC.TypeLits.Witnesses.SNat
- GHC.TypeLits.Witnesses: instance Data.GADT.Show.GShow GHC.TypeLits.Witnesses.SSymbol
+ GHC.TypeLits.Witnesses: instance Data.GADT.Internal.GCompare GHC.TypeLits.Witnesses.SNat
+ GHC.TypeLits.Witnesses: instance Data.GADT.Internal.GCompare GHC.TypeLits.Witnesses.SSymbol
+ GHC.TypeLits.Witnesses: instance Data.GADT.Internal.GEq GHC.TypeLits.Witnesses.SNat
+ GHC.TypeLits.Witnesses: instance Data.GADT.Internal.GEq GHC.TypeLits.Witnesses.SSymbol
+ GHC.TypeLits.Witnesses: instance Data.GADT.Internal.GShow GHC.TypeLits.Witnesses.SNat
+ GHC.TypeLits.Witnesses: instance Data.GADT.Internal.GShow GHC.TypeLits.Witnesses.SSymbol
- GHC.TypeLits.Compare: [CEQ] :: (CmpNat m n :~: 'EQ) -> (m :~: n) -> SCmpNat m n
+ GHC.TypeLits.Compare: [CEQ] :: (CmpNat m n :~: 'EQ) -> (m :~: n) -> SCmpNat m n
- GHC.TypeLits.Compare: [CGT] :: (CmpNat m n :~: 'GT) -> SCmpNat m n
+ GHC.TypeLits.Compare: [CGT] :: (CmpNat m n :~: 'GT) -> SCmpNat m n
- GHC.TypeLits.Compare: [CLT] :: (CmpNat m n :~: 'LT) -> SCmpNat m n
+ GHC.TypeLits.Compare: [CLT] :: (CmpNat m n :~: 'LT) -> SCmpNat m n
- GHC.TypeLits.Compare: [LE] :: ((m <=? n) :~: 'True) -> m :<=? n
+ GHC.TypeLits.Compare: [LE] :: ((m <=? n) :~: 'True) -> m :<=? n
- GHC.TypeLits.Compare: [NLE] :: ((m <=? n) :~: 'False) -> ((n <=? m) :~: 'True) -> m :<=? n
+ GHC.TypeLits.Compare: [NLE] :: ((m <=? n) :~: 'False) -> ((n <=? m) :~: 'True) -> m :<=? n
- GHC.TypeLits.Compare: cmpNatEq :: (CmpNat m n :~: 'EQ) -> m :~: n
+ GHC.TypeLits.Compare: cmpNatEq :: (CmpNat m n :~: 'EQ) -> m :~: n
- GHC.TypeLits.Compare: eqCmpNat :: (m :~: n) -> CmpNat m n :~: 'EQ
+ GHC.TypeLits.Compare: eqCmpNat :: (m :~: n) -> CmpNat m n :~: 'EQ
- GHC.TypeLits.Compare: isLE :: (KnownNat m, KnownNat n) => p m -> q n -> Maybe ((m <=? n) :~: 'True)
+ GHC.TypeLits.Compare: isLE :: (KnownNat m, KnownNat n) => p m -> q n -> Maybe ((m <=? n) :~: 'True)
- GHC.TypeLits.Compare: isNLE :: (KnownNat m, KnownNat n) => p m -> q n -> Maybe ((m <=? n) :~: 'False)
+ GHC.TypeLits.Compare: isNLE :: (KnownNat m, KnownNat n) => p m -> q n -> Maybe ((m <=? n) :~: 'False)
- GHC.TypeLits.Witnesses: (%*) :: SNat n -> SNat m -> SNat (n - m)
+ GHC.TypeLits.Witnesses: (%*) :: SNat n -> SNat m -> SNat (n * m)
- GHC.TypeLits.Witnesses: minusSNat :: SNat n -> SNat m -> Either (CmpNat n m :~: 'LT) (SNat (n - m))
+ GHC.TypeLits.Witnesses: minusSNat :: SNat n -> SNat m -> Either (CmpNat n m :~: 'LT) (SNat (n - m))
Files
- CHANGELOG.md +12/−0
- src/GHC/TypeLits/Compare.hs +4/−2
- src/GHC/TypeLits/Witnesses.hs +10/−6
- typelits-witnesses.cabal +5/−6
CHANGELOG.md view
@@ -1,6 +1,18 @@ Changelog ========= +Version 0.4.0.1+---------------++<https://github.com/mstksg/typelits-witnesses/releases/tag/v0.4.0.1>++*November 29, 2023*++* Fix for GHC 8.2++* Fix type of `(%*)`+* `minusSNat` fixed+* Qualified `cmpNat`+ Version 0.4.0.0 ---------------
src/GHC/TypeLits/Compare.hs view
@@ -83,7 +83,7 @@ , isNLE -- * 'CmpNat' , SCmpNat(..)- , cmpNat+ , GHC.TypeLits.Compare.cmpNat -- ** Manipulating witnesses , flipCmpNat , cmpNatEq@@ -96,7 +96,9 @@ import Data.Kind import Data.Type.Equality-import GHC.TypeLits+import GHC.TypeLits ( Nat, KnownNat, CmpNat+ , type (<=?)+ , natVal ) import Unsafe.Coerce import Data.GADT.Compare
src/GHC/TypeLits/Witnesses.hs view
@@ -7,6 +7,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE NoStarIsType #-} {-# LANGUAGE TypeInType #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE ViewPatterns #-}@@ -118,9 +119,12 @@ import Data.Proxy import Data.Type.Equality import GHC.Natural-import GHC.TypeLits hiding (natVal, someNatVal)+import GHC.TypeLits ( KnownSymbol, SomeSymbol(..)+ , symbolVal, someSymbolVal, sameSymbol ) import GHC.TypeLits.Compare hiding ((%<=?))-import GHC.TypeNats+import GHC.TypeNats ( KnownNat, SomeNat(..), CmpNat+ , type (+), type (-), type (*), type (^)+ , natVal, someNatVal, sameNat ) import Unsafe.Coerce import qualified GHC.TypeLits.Compare as Comp @@ -292,20 +296,20 @@ -> Either (CmpNat n m :~: 'LT) (SNat (n - m)) minusSNat (fromSNat->x) (fromSNat->y) = case minusNaturalMaybe x y of Nothing -> Left (unsafeCoerce Refl)- Just z -> withSomeNat z unsafeCoerce+ Just z -> withSomeNat z (Right . unsafeCoerce) -- | A version of 'minusSNat' that just returns a 'Maybe'. minusSNat_ :: SNat n -> SNat m -> Maybe (SNat (n - m)) minusSNat_ x = either (const Nothing) Just . minusSNat x --- | Addition of 'SNat's.+-- | Multiplication of 'SNat's. -- -- This also will provide the correct 'KnownNat' instance for @'SNat' (n -- * m)@, so can be used as a way to "multiply" 'KnownNat' instances. -- -- This stands in for the function with the same name from -- "Data.Singletons.Prelude.Num".-(%*) :: SNat n -> SNat m -> SNat (n - m)+(%*) :: SNat n -> SNat m -> SNat (n * m) (%*) = unsafeLiftNatOp2 (*) -- | Exponentiation of 'SNat's.@@ -326,7 +330,7 @@ -- | Compare @n@ and @m@, categorizing them into one of the constructors of -- 'SCmpNat'. sCmpNat :: SNat n -> SNat m -> SCmpNat n m-sCmpNat x@SNat y@SNat = cmpNat x y+sCmpNat x@SNat y@SNat = GHC.TypeLits.Compare.cmpNat x y -- | An @'SSymbol' n@ is a witness for @'KnownSymbol' n@. --
typelits-witnesses.cabal view
@@ -1,13 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.1.+-- This file has been generated from package.yaml by hpack version 0.34.5. -- -- see: https://github.com/sol/hpack------ hash: 8a6351c34d982cd0199ea26cf5f6378e136998abb7019115d627268f8977bdda name: typelits-witnesses-version: 0.4.0.0+version: 0.4.0.1 synopsis: Existential witnesses, singletons, and classes for operations on GHC TypeLits description: This library contains: .@@ -28,8 +26,9 @@ copyright: (c) Justin Le 2018 license: MIT license-file: LICENSE-tested-with: GHC>=8.2 && <8.8 build-type: Simple+tested-with:+ GHC>=8.2 extra-source-files: README.md CHANGELOG.md@@ -49,5 +48,5 @@ ghc-options: -Wall -Wredundant-constraints -Werror=incomplete-patterns -Wcompat build-depends: base >=4.10 && <5- , dependent-sum+ , dependent-sum <0.8 default-language: Haskell2010