parameterized-utils 2.1.11.0 → 2.3.0.0
raw patch · 14 files changed
Files
- Changelog.md +11/−0
- parameterized-utils.cabal +3/−4
- src/Data/Parameterized/Classes.hs +6/−6
- src/Data/Parameterized/Compose.hs +2/−1
- src/Data/Parameterized/Context.hs +3/−2
- src/Data/Parameterized/Context/Safe.hs +9/−9
- src/Data/Parameterized/Context/Unsafe.hs +2/−2
- src/Data/Parameterized/Fin.hs +9/−27
- src/Data/Parameterized/List.hs +1/−1
- src/Data/Parameterized/Map.hs +1/−1
- src/Data/Parameterized/Some.hs +2/−2
- src/Data/Parameterized/TraversableFC/WithIndex.hs +7/−1
- test/Test/Context.hs +3/−1
- test/Test/Some.hs +2/−1
Changelog.md view
@@ -1,5 +1,16 @@ # Changelog for the `parameterized-utils` package +## 2.3.0.0 -- 2026-03-06++ * BREAKING: Remove the `Iso`s `fin0Void`, `fin1Unit`, and `fin2Bool`.+ * Deprecate `Data.Parameterized.Compose`.++## 2.2.0.0 -- 2026-01-22++ * Replace dependency on `lens` with `microlens` and `microlens-pro`.+ * Deprecate the `Iso`s `fin0Void`, `fin1Unit`, and `fin2Bool`.+ * Add `fin0Absurd :: Fin 0 -> a`.+ ## 2.1.11.0 -- *2025 Nov 4* * Add support for GHC 9.12.
parameterized-utils.cabal view
@@ -1,6 +1,6 @@ Cabal-version: 2.2 Name: parameterized-utils-Version: 2.1.11.0+Version: 2.3.0.0 Author: Galois Inc. Maintainer: kquick@galois.com, rscott@galois.com stability: stable@@ -59,9 +59,8 @@ , hashable >=1.2 && <1.6 , hashtables >=1.2 && <1.5 , indexed-traversable- , lens >=4.16 && <5.4+ , microlens >=0.5 && <0.6 , mtl- , profunctors >=5.6 && < 5.7 , template-haskell , text , vector >=0.12 && < 0.14@@ -136,7 +135,7 @@ , hashtables , hedgehog , indexed-traversable- , lens+ , microlens >=0.5 && <0.6 , mtl , parameterized-utils , tasty >= 1.2 && < 1.6
src/Data/Parameterized/Classes.hs view
@@ -8,6 +8,11 @@ "Data.Functor.Classes" types as they work with any kind @k@, and are not restricted to '*'. -}++-- TODO(#221): This is for the deprecation warning on+-- Data.Parameterized.Compose, remove this when that module is removed.+{-# OPTIONS_GHC -Wno-deprecations #-}+ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DefaultSignatures #-}@@ -65,14 +70,9 @@ import Data.Maybe (isJust) import Data.Proxy import Data.Type.Equality as Equality+import Lens.Micro (Lens', Traversal') import Data.Parameterized.Compose ()---- We define these type alias here to avoid importing Control.Lens--- modules, as this apparently causes problems with the safe Hasekll--- checking.-type Lens' s a = forall f. Functor f => (a -> f a) -> s -> f s-type Traversal' s a = forall f. Applicative f => (a -> f a) -> s -> f s ------------------------------------------------------------------------ -- CoercibleF
src/Data/Parameterized/Compose.hs view
@@ -16,7 +16,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE Safe #-}-module Data.Parameterized.Compose+module Data.Parameterized.Compose {-# DEPRECATED "See #170" #-} ( testEqualityComposeBare ) where @@ -37,3 +37,4 @@ case (testEquality_ x y :: Maybe (g x :~: g y)) of Just Refl -> Just (Refl :: x :~: y) Nothing -> Nothing+{-# DEPRECATED testEqualityComposeBare "See #170" #-}
src/Data/Parameterized/Context.hs view
@@ -103,13 +103,14 @@ import Prelude hiding (unzip) import qualified Control.Applicative as App (liftA2)-import Control.Lens hiding (Index, (:>), Empty)+import Data.Function ((&)) import Data.Functor (void) import Data.Functor.Product (Product(Pair)) import Data.Kind import qualified Data.Vector as V import qualified Data.Vector.Mutable as MV import GHC.TypeLits (Nat, type (-))+import Lens.Micro (Lens', Lens, lens, (^.), (%~)) import Data.Parameterized.Classes import Data.Parameterized.Some@@ -301,7 +302,7 @@ -- ExtendBoth :: CtxEmbedding ctx ctx' -> CtxEmbedding (ctx ::> tp) (ctx' ::> tp) -- ExtendOne :: CtxEmbedding ctx ctx' -> CtxEmbedding ctx (ctx' ::> tp) -ctxeSize :: Simple Lens (CtxEmbedding ctx ctx') (Size ctx')+ctxeSize :: Lens' (CtxEmbedding ctx ctx') (Size ctx') ctxeSize = lens _ctxeSize (\s v -> s { _ctxeSize = v }) ctxeAssignment :: Lens (CtxEmbedding ctx1 ctx') (CtxEmbedding ctx2 ctx')
src/Data/Parameterized/Context/Safe.hs view
@@ -110,15 +110,15 @@ ) where import qualified Control.Category as Cat-import Control.DeepSeq-import qualified Control.Lens as Lens-import Control.Monad.Identity (Identity(..))-import Data.Hashable-import Data.List (intercalate)-import Data.Maybe (listToMaybe)-import Data.Type.Equality-import Prelude hiding (init, map, null, replicate, succ, zipWith)-import Data.Kind(Type)+import Control.DeepSeq+import Control.Monad.Identity (Identity(..))+import Data.Hashable+import Data.Kind (Type)+import Data.List (intercalate)+import Data.Maybe (listToMaybe)+import Data.Type.Equality+import qualified Lens.Micro as Lens+import Prelude hiding (init, map, null, replicate, succ, zipWith) import Data.Parameterized.Classes import Data.Parameterized.Ctx
src/Data/Parameterized/Context/Unsafe.hs view
@@ -90,15 +90,15 @@ import qualified Control.Category as Cat import Control.DeepSeq import Control.Exception-import qualified Control.Lens as Lens import Control.Monad.Identity (Identity(..)) import Data.Bits import Data.Coerce import Data.Hashable+import Data.Kind (Type) import Data.List (intercalate) import Data.Proxy+import qualified Lens.Micro as Lens import Unsafe.Coerce-import Data.Kind(Type) import Data.Parameterized.Axiom import Data.Parameterized.Classes
src/Data/Parameterized/Fin.hs view
@@ -31,15 +31,11 @@ , tryEmbed , minFin , incFin- , fin0Void- , fin1Unit- , fin2Bool+ , fin0Absurd ) where -import Control.Lens.Iso (Iso', iso) import GHC.TypeNats (KnownNat) import Numeric.Natural (Natural)-import Data.Void (Void, absurd) import Data.Parameterized.NatRepr @@ -124,25 +120,11 @@ case leqAdd2 (LeqProof :: LeqProof (i + 1) n) (LeqProof :: LeqProof 1 1) of LeqProof -> mkFin (incNat i) -fin0Void :: Iso' (Fin 0) Void-fin0Void =- iso- (viewFin- (\(x :: NatRepr o) ->- case plusComm x (knownNat @1) of- Refl ->- case addIsLeqLeft1 @1 @o @0 LeqProof of {}))- absurd--fin1Unit :: Iso' (Fin 1) ()-fin1Unit = iso (const ()) (const minFin)--fin2Bool :: Iso' (Fin 2) Bool-fin2Bool =- iso- (viewFin- (\n ->- case isZeroNat n of- ZeroNat -> False- NonZeroNat -> True))- (\b -> if b then maxBound else minBound)+-- | It is not possible to construct an element of @'Fin' 0@.+fin0Absurd :: Fin 0 -> a+fin0Absurd =+ viewFin+ (\(x :: NatRepr o) ->+ case plusComm x (knownNat @1) of+ Refl ->+ case addIsLeqLeft1 @1 @o @0 LeqProof of {})
src/Data/Parameterized/List.hs view
@@ -153,7 +153,7 @@ , index3 ) where -import qualified Control.Lens as Lens+import qualified Lens.Micro as Lens import Data.Foldable import Data.Kind import Prelude hiding ((!!))
src/Data/Parameterized/Map.hs view
@@ -82,13 +82,13 @@ ) where import Control.Applicative hiding (empty)-import Control.Lens (Traversal', Lens') import Control.Monad.Identity (Identity(..)) import Control.Monad (foldM) import Data.Kind (Type) import qualified Data.List as List import Data.Monoid import Prelude hiding (filter, lookup, map, traverse, null)+import Lens.Micro (Traversal', Lens') import Data.Parameterized.Classes import Data.Parameterized.Some
src/Data/Parameterized/Some.hs view
@@ -20,11 +20,11 @@ , someLens ) where -import Control.Lens (Lens', lens, (&), (^.), (.~)) import Data.Hashable-import Data.Kind+import Data.Kind (Type) import Data.Parameterized.Classes import Data.Parameterized.TraversableF+import Lens.Micro (Lens', lens, (&), (^.), (.~)) data Some (f:: k -> Type) = forall x . Some (f x)
src/Data/Parameterized/TraversableFC/WithIndex.hs view
@@ -24,15 +24,21 @@ , ifoldMapFCDefault ) where +import Data.Coerce (Coercible, coerce) import Data.Functor.Const (Const(Const, getConst)) import Data.Functor.Identity (Identity(Identity, runIdentity)) import Data.Kind import Data.Monoid (All(..), Any(..), Endo(Endo), appEndo, Dual(Dual, getDual))-import Data.Profunctor.Unsafe ((#.)) import GHC.Exts (build) import Data.Parameterized.Classes import Data.Parameterized.TraversableFC++-- See Note [Function coercion] in+-- https://hackage-content.haskell.org/package/ghc-internal-9.1401.0/src/src/GHC/Internal/Data/Functor/Utils.hs+(#.) :: Coercible b c => (b -> c) -> (a -> b) -> (a -> c)+(#.) _f = coerce+{-# INLINE (#.) #-} class FunctorFC t => FunctorFCWithIndex (t :: (k -> Type) -> l -> Type) where -- | Like 'fmapFC', but with an index.
test/Test/Context.hs view
@@ -18,7 +18,8 @@ ) where -import Control.Lens+import Data.Function ((&))+import Data.Functor.Identity (Identity(..)) import Data.Functor.Product (Product(Pair)) import Data.Kind import Data.Parameterized.Classes@@ -33,6 +34,7 @@ import Hedgehog import qualified Hedgehog.Gen as HG import Hedgehog.Range+import Lens.Micro ((%~), (.~), over) import Test.Tasty import Test.Tasty.HUnit ( (@=?), (@?=), testCaseSteps ) import Test.Tasty.Hedgehog
test/Test/Some.hs view
@@ -7,7 +7,8 @@ where import Data.Type.Equality (TestEquality(testEquality), (:~:)(Refl))-import Control.Lens (Lens', lens, view, set)+import Lens.Micro (Lens', lens, set)+import Lens.Micro.Extras (view) import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (assertEqual, testCase)