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 n
function. Starting with GHC 9.2, GHC is no longer able to conclude thatforall (n :: Nat). 0 <= n
due to changes in how the(<=)
type family works. As a result, this fact must be asserted as an axiom, which theleqZero
function accomplishes.
2.1.4.0 -- 2021 Oct 1
- Added the
ifoldLM
andfromSomeList
,fromListWith
, andfromListWithM
functions to theList
module. - Fix the description of the laws of the
OrdF
class. - Fix a bug in which
Data.Parameterized.Vector.{join,joinWith,joinWithM}
andData.Parameterized.NatRepr.plusAssoc
could crash at runtime if compiled without optimizations. - Add a
Data.Parameterized.Axiom
module providingunsafeAxiom
andunsafeHeteroAxiom
, 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
Proxy
enhancements: addsKnownRepr
,EqF
, andShowF
instances. - Adds
mkRepr
andmkKnownReprs
Template Haskell functions. - Added
TraversableFC.WithIndex
module which provides theFunctorFCWithIndex
,FoldableFCWithIndex
, andTraversableFCWithIndex
classes, with instances defined forAssignment
andList
. - Added
indicesUpTo
, andindicesOf
as well asiterateN
anditerateNM
for theVector
module. - Added
Data.Parameterized.Fin
for finite types which can be used to index into aVector n
or other size-indexed datatypes.
2.1.3.0 -- 2021 Mar 23
- Add support for GHC 9.
- In the
Context
module:- Added
sizeToNatRepr
function for converting aContext
Size
. - Added
unzip
to unzip anAssignment
ofProduct(Pair)
into a separateAssignment
for each element of thePair
(the inverse of thezipWith Pair
operation). - Added
flattenAssignment
to convert anAssignment
ofAssignment
into anAssignment
ofCtxFlatten
. Also addsflattenSize
to combine the sizes of each context into the size of the correspondingCtxFlatten
.
- Added
- In the
Vector
module:- Added
fromAssignment
andtoAssignment
to allow conversions betweenAssignment
andVector
. - Added
unsnoc
,unfoldr
,unfoldrM
,unfoldrWithIndex
, andunfoldrWithIndexM
functions.
- Added
- Various haddock documentation updates and corrections.
- Updated the Cabal specification to Cabal-version 2.2.
2.1.2 -- 2021 Jan 25
- Added
SomeSym
andviewSomeSym
for existentially hidden Symbol values which retain theKnownSymbol
constraint. - Added
leftIndex
andrightIndex
for 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
drop
andappendEmbeddingLeft
functions to theContext
module. - Fixes/updates to haddock documentation (fixing Issue #74).
- Allow tasty v1.3 for testing (thanks to felixonmars)
2.1.0 -- 2020 May 08
- Added
plusAssoc
to theNatRepr
module to produce+
associativity evidence. - Changed the
HashTable
module 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
dropPrefix
operation toContext
which splits anAssignment
. - Add
intersectWithKeyMaybe
andmergeWithKey
toMap
. - Add
mapAt
,mapAtM
, andreplace
toVector
. - Add dependency on
base-orphans
to handle theTestEquality
instance forCompose
; needed for GHC 8.10. - Bump upper limit of
lens
dependency 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
findWithDefault
to 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.All
module for universal quantification/parametricity over a type variable. - Additions to
Data.Parameterized.Context
:- Added
IndexView
type andviewIndex
functions. - Added
addDiff
function to explicitly describe the (flipped) binary operator for theDiff
instance of theCategory
class fromControl.Category
. - Added
traverseWithIndex_
- Added
- Added
Data.Parameterized.DataKind
providing thePairRepr
type with associatedfst
andsnd
functions. - Added
TypeAp
toData.Parameterized.Classes
- Added
runSTNonceGenerator
toData.Parameterized.Nonce
for a global ST generator. - Added a
Hashable
instance for listIndex l x
types. - Changes in GADT TH code generator:
- Added
structuralHashWithSalt
to - Fixed off by one bug in output
- Fixed generation and constructor generation to use constructor type arguments, not type parameters.
- Added
- The
Some
type is now an instance ofFunctorF
,FoldableF
, andTraversableF
. - Adjusted
structuralShowsPrec
precedence to match GHC derivedShow
instances. - The
Data.Parameterized.Nonce.Unsafe
module 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
OrdF
instance forCompose
- Added function:
- Data.Parameterized.ClassesC
- Marked as
Safe
haskell via pragma - Added
OrdC
instance forSome
- Marked as
- Data.Parameterized.Compose
- Update
testEqualityComposeBare
to be more kind-polymorphic. - Marked as
Safe
haskell via pragma
- Update
- Data.Parameterized.Context
- Added
diffIsAppend
function to extract the contextual difference between twoContext
s (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
Int
toNatural
- Add function
intValue
to recover anInt
from aNatRepr
. - Add constructor function
mkNatRepr
to construct aNatRepr
from aNatural
. - Removed awkward backdoor for directly creating
NatRepr
values; the single needed internal usage is now handled internally.
- Change runtime representation from
- Data.Parameterized.Peano
- Newly added module.
- Defines a type
Peano
andPeanoRepr
for representing a type-level natural at runtime. - The runtime representation of
PeanoRepr
isWord64
- Has both safe and unsafe implementations.
- Data.Parameterized.WithRepr
- Newly added module.
- This module declares a class
IsRepr
with a single methodwithRepr
that 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
MapF
functionsfilter
andfilterWithKey
- Added
MapF
function:mapWithKey
- Fixed
- Data.Parameterized.NatRepr
- Un-deprecate
withKnownNat
- Un-deprecate
- Data.Parameterized.Context
- Updated some haddock documentation (esp.
CtxEmbedding
data structure).
- Updated some haddock documentation (esp.
- Data.Parameterized.Nonce
- Fixed
newIONonceGenerator
haddock documentation (IO monad, not ST monad). - Added
countNoncesGenerated
for profiling Nonce usage.
- Fixed
- Data.Parameterized.TraversableF
- Added
FunctorF
,FoldableF
, andTraversableF
instances forCompose
from Data.Functor.Compose
- Added
- Data.Parameterized.ClassesC
- Newly added module.
- Declares
TestEqualityC
andOrdC
classes for working with types that have kind(k -> *) -> *
for anyk
.
- Data.Parameterized.Compose
- Newly added module.
- Orphan instance and
testEqualityComposeBare
function 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
MapF
functions:filter
filterWithKey
- Added
1.0.6 -- 2018 Nov 19
- Add support for GHC 8.6.
- Data.Parameterized.Map
- Added functions:
foldlWithKey
andfoldlWithKey'
(strict)foldrWithKey
andfoldrWithKey'
(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
DecidableEq
class 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
DecidableEq
instance for NatRepr. - Add functions:
decideLeq
isZeroOrGT1
lessThanIrreflexive
lessThanAsymmetric
natRecStrong
-- 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
lemmaMul
from Vector to NatRepr. - Add stricter role annotations:
NatRepr
is nominal.Vector
is nominal in the first parameter and representational in the second.
- Data.Parameterized.NatRepr
- Provide a backdoor for directly creating
NatRepr
values. 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.