Changelog for parameterized-utils-2.1.5.0
Changelog for the parameterized-utils package
2.1.5.0 -- 2022 Mar 08
- Add support for GHC 9.2. Drop support for GHC 8.4 (or earlier).
- Add a
Data.Parameterized.NatRepr.leqZero :: LeqProof 0 nfunction. Starting with GHC 9.2, GHC is no longer able to conclude thatforall (n :: Nat). 0 <= ndue to changes in how the(<=)type family works. As a result, this fact must be asserted as an axiom, which theleqZerofunction accomplishes.
2.1.4.0 -- 2021 Oct 1
- Added the
ifoldLMandfromSomeList,fromListWith, andfromListWithMfunctions to theListmodule. - Fix the description of the laws of the
OrdFclass. - Fix a bug in which
Data.Parameterized.Vector.{join,joinWith,joinWithM}andData.Parameterized.NatRepr.plusAssoccould crash at runtime if compiled without optimizations. - Add a
Data.Parameterized.Axiommodule providingunsafeAxiomandunsafeHeteroAxiom, which can construct proofs of equality between types that GHC isn't able to prove on its own. These functions are unsafe if used improperly, so the responsibility is on the programmer to ensure that these functions are used appropriately. - Various
Proxyenhancements: addsKnownRepr,EqF, andShowFinstances. - Adds
mkReprandmkKnownReprsTemplate Haskell functions. - Added
TraversableFC.WithIndexmodule which provides theFunctorFCWithIndex,FoldableFCWithIndex, andTraversableFCWithIndexclasses, with instances defined forAssignmentandList. - Added
indicesUpTo, andindicesOfas well asiterateNanditerateNMfor theVectormodule. - Added
Data.Parameterized.Finfor finite types which can be used to index into aVector nor other size-indexed datatypes.
2.1.3.0 -- 2021 Mar 23
- Add support for GHC 9.
- In the
Contextmodule:- Added
sizeToNatReprfunction for converting aContextSize. - Added
unzipto unzip anAssignmentofProduct(Pair)into a separateAssignmentfor each element of thePair(the inverse of thezipWith Pairoperation). - Added
flattenAssignmentto convert anAssignmentofAssignmentinto anAssignmentofCtxFlatten. Also addsflattenSizeto combine the sizes of each context into the size of the correspondingCtxFlatten.
- Added
- In the
Vectormodule:- Added
fromAssignmentandtoAssignmentto allow conversions betweenAssignmentandVector. - Added
unsnoc,unfoldr,unfoldrM,unfoldrWithIndex, andunfoldrWithIndexMfunctions.
- Added
- Various haddock documentation updates and corrections.
- Updated the Cabal specification to Cabal-version 2.2.
2.1.2 -- 2021 Jan 25
- Added
SomeSymandviewSomeSymfor existentially hidden Symbol values which retain theKnownSymbolconstraint. - Added
leftIndexandrightIndexfor re-casting indexes of the individual parts of an Assignment into the concatenated Assignment. - Additional tests and updated documentation.
2.1.1 -- 2020 Jul 30
- Added
dropandappendEmbeddingLeftfunctions to theContextmodule. - Fixes/updates to haddock documentation (fixing Issue #74).
- Allow tasty v1.3 for testing (thanks to felixonmars)
2.1.0 -- 2020 May 08
- Added
plusAssocto theNatReprmodule to produce+associativity evidence. - Changed the
HashTablemodule to use the Basic instead of the Cuckoo implementation strategy. - Added explicit kind parameters to various definitions to support
GHC 8.10's adoption of proposal 103.
This is a modification to the type signatures which may impact
backward-compatibility and require updates, especially for any
uses of
TypeApplications. - No longer verifying support for GHC 8.2 or earlier.
- Updated the minimum cabal version to 1.10 and specify the default-language as Haskell2010.
2.0.2 -- 2020 Feb 10
- Add the
dropPrefixoperation toContextwhich splits anAssignment. - Add
intersectWithKeyMaybeandmergeWithKeytoMap. - Add
mapAt,mapAtM, andreplacetoVector. - Add dependency on
base-orphansto handle theTestEqualityinstance forCompose; needed for GHC 8.10. - Bump upper limit of
lensdependency to allow 4.19.
2.0.1 -- 2019 Nov 06
- Documentation updates
- Dependency constraint updates: constraints, lens, th-abstraction, hashable, hashtables, and vector.
- Now supports building under GHC 8.8.1.
- Added monadic folds and more traversals:
- lazy folds:
foldlMF,foldrMF,foldlMFC,foldrMFC - strict folds:
foldlMF',foldrMF',foldlMFC',foldrMFC' forF,forF_forFC,forFC_lengthF
- lazy folds:
- Added monadic folds, ascending or descending list conversions to
Parameterized.Map:- Added monadic folds:
foldlMWithKey,foldrMWithKey - Added ascending or descending list conversions:
toAscList(equivalent to existingtoList) andtoDescList. - Added
findWithDefaultto lookup a key or return a default value. - Added
traverseMaybeWithKey. - Fixes traverse to do an in-order rather than a pre-order traversal.
- Added monadic folds:
- Added the
Data.Parameterized.Allmodule for universal quantification/parametricity over a type variable. - Additions to
Data.Parameterized.Context:- Added
IndexViewtype andviewIndexfunctions. - Added
addDifffunction to explicitly describe the (flipped) binary operator for theDiffinstance of theCategoryclass fromControl.Category. - Added
traverseWithIndex_
- Added
- Added
Data.Parameterized.DataKindproviding thePairReprtype with associatedfstandsndfunctions. - Added
TypeAptoData.Parameterized.Classes - Added
runSTNonceGeneratortoData.Parameterized.Noncefor a global ST generator. - Added a
Hashableinstance for listIndex l xtypes. - Changes in GADT TH code generator:
- Added
structuralHashWithSaltto - Fixed off by one bug in output
- Fixed generation and constructor generation to use constructor type arguments, not type parameters.
- Added
- The
Sometype is now an instance ofFunctorF,FoldableF, andTraversableF. - Adjusted
structuralShowsPrecprecedence to match GHC derivedShowinstances. - The
Data.Parameterized.Nonce.Unsafemodule is now deprecated: clients should switch toData.Parameterized.Nonce.
2.0 -- 2019 Apr 03
- Drop support for GHC versions prior to GHC 8.2
- Various Haddock and module updates.
- Data.Parameterized.Classes
- Added function:
ordFCompose - Added
OrdFinstance forCompose
- Added function:
- Data.Parameterized.ClassesC
- Marked as
Safehaskell via pragma - Added
OrdCinstance forSome
- Marked as
- Data.Parameterized.Compose
- Update
testEqualityComposeBareto be more kind-polymorphic. - Marked as
Safehaskell via pragma
- Update
- Data.Parameterized.Context
- Added
diffIsAppendfunction to extract the contextual difference between twoContexts (as aDiff) as anIsAppend(new) data value if the left is a sub-context of the right.
- Added
- Data.Parameterized.NatRepr
- Change runtime representation from
InttoNatural - Add function
intValueto recover anIntfrom aNatRepr. - Add constructor function
mkNatReprto construct aNatReprfrom aNatural. - Removed awkward backdoor for directly creating
NatReprvalues; the single needed internal usage is now handled internally.
- Change runtime representation from
- Data.Parameterized.Peano
- Newly added module.
- Defines a type
PeanoandPeanoReprfor representing a type-level natural at runtime. - The runtime representation of
PeanoReprisWord64 - Has both safe and unsafe implementations.
- Data.Parameterized.WithRepr
- Newly added module.
- This module declares a class
IsReprwith a single methodwithReprthat can be used to derive a 'KnownRepr' constraint from an explicit 'Repr' argument. Clients of this method need only create an empty instance. The default implementation suffices.
1.0.8 -- 2019 Feb 01
- Data.Parameterized.Map
- Fixed
MapFfunctionsfilterandfilterWithKey - Added
MapFfunction:mapWithKey
- Fixed
- Data.Parameterized.NatRepr
- Un-deprecate
withKnownNat
- Un-deprecate
- Data.Parameterized.Context
- Updated some haddock documentation (esp.
CtxEmbeddingdata structure).
- Updated some haddock documentation (esp.
- Data.Parameterized.Nonce
- Fixed
newIONonceGeneratorhaddock documentation (IO monad, not ST monad). - Added
countNoncesGeneratedfor profiling Nonce usage.
- Fixed
- Data.Parameterized.TraversableF
- Added
FunctorF,FoldableF, andTraversableFinstances forComposefrom Data.Functor.Compose
- Added
- Data.Parameterized.ClassesC
- Newly added module.
- Declares
TestEqualityCandOrdCclasses for working with types that have kind(k -> *) -> *for anyk.
- Data.Parameterized.Compose
- Newly added module.
- Orphan instance and
testEqualityComposeBarefunction for working with Data.Functor.Compose.
- Data.Parameterized.TestEquality
- Newly added module.
- Utilities for working with Data.Type.TestEquality.
1.0.7 -- 2018 Nov 17
- Data.Parameterized.Map
- Added
MapFfunctions:filterfilterWithKey
- Added
1.0.6 -- 2018 Nov 19
- Add support for GHC 8.6.
- Data.Parameterized.Map
- Added functions:
foldlWithKeyandfoldlWithKey'(strict)foldrWithKeyandfoldrWithKey'(strict)mapMaybeWithKey
- Added functions:
1.0.5 -- 2018 Sep 04
- Data.Parameterized.Context
- Add function:
take,appendEmbedding,appendDiff - Diff is type role nominal in both parameters.
- Add function:
1.0.4 -- 2018 Aug 29
- Data.Parameterized.Context
- Add
traverseAndCollect. Allows traversal of an Assignment in order from left to right, collecting the results of a visitor function monoidically.
- Add
- Data.Parameterized.DecidableEq
- Newly added module. The
DecidableEqclass represents decideable equality on a type family as a superclass ofTestEquality, where the latter cannot provide evidence of non-equality.
- Newly added module. The
- Data.Parameterized.NatRepr
- Add
DecidableEqinstance for NatRepr. - Add functions:
decideLeqisZeroOrGT1lessThanIrreflexivelessThanAsymmetricnatRecStrong-- recursor with strong inductionnatRecBounded-- bounded recursornatFromZero
- Add
- Data.Parameterized.Vector
- Add construction functions:
singleton,cons,snoc,generate, andgenerateM - Add functions:
splitWithA(applicativesplitWith).
- Add construction functions:
1.0.3 -- 2018 Aug 24
- Move
lemmaMulfrom Vector to NatRepr. - Add stricter role annotations:
NatRepris nominal.Vectoris nominal in the first parameter and representational in the second.
- Data.Parameterized.NatRepr
- Provide a backdoor for directly creating
NatReprvalues. Use carefully.
- Provide a backdoor for directly creating
- Data.Parameterized.Vector
- Add Show and Eq instances
- Add functions:
joinWithM,reverse
1.0.2 -- 2018 Aug 23
- Allow function passed to
traverseF_,traverseFC_, andforMFC_to return a value instead of null (()). - Data.Parameterized.Vector
- Newly added module. A fixed-size vector of typed elements.
- Data.Parameterized.Utils.Endian
- Newly added module. Used in Vector.
1.0.1 -- 2018 Aug 13
Baseline for changelog tracking.