typelits-witnesses
Existential witnesses, singletons, and classes for operations on GHC TypeLits
https://github.com/mstksg/typelits-witnesses
| LTS Haskell 24.16: | 0.4.1.0 |
| Stackage Nightly 2025-10-24: | 0.4.1.0 |
| Latest on Hackage: | 0.4.1.0 |
typelits-witnesses-0.4.1.0@sha256:ec237703b0a9bee94464c1797c241553f38755fce5cfc9c4cdd61354b15bcac5,1773Module documentation for 0.4.1.0
- GHC
- GHC.TypeLits
typelits-witnesses
This library contains:
- A small specialized subset of the singletons library as it pertains to
NatandSymbol, for when you need some simple functionality without wanting to invoke the entire singletons library. - Operations for manipulating these singletons and
KnownNatandKnownSymbolinstances, such as addition and multiplication of singletons/KnownNatinstances. - Operations for the comparison of
Nats in a way that works well with GHC.TypeLits’s different comparison systems. This is helpful for bridging together libraries that use different systems; this functionality is not yet provided by singletons.
Changes
Changelog
Version 0.4.1.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.4.1.0
July 24, 2024
- Use the
SSymbolandSNatfrom base on GHC 9.8+
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
(%*) minusSNatfixed- Qualified
cmpNat
Version 0.4.0.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.4.0.0
June 20, 2019
- Complete overhaul of GHC.TypeLits.Witnesses to more or less match the
interface of singletons. This changes the role of the module to be a
“lightweight” version of the singletons library as it pertains to
NatandSymbol. - Removal of the GHC.TypeLits.List module. We could perform the same overhaul as GHC.TypeLits.Witnesses, but it is complex enough that it would be better to just use singletons instead at that point.
- Remove all external dependencies, except for base and dependent-sum.
- Break compatibility with GHC < 8.2
Version 0.3.0.3
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.3.0.3
October 1, 2018
- Fix build for GHC 8.6 and
TypeIsStarchanges. - Break compatibility with GHC < 8.0
Version 0.3.0.2
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.3.0.2
March 30, 2018
- Functions taking multiple
p min GHC.TypeLits.Compare now are able to take different “proxy” types (pandq).
Version 0.3.0.1
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.3.0.1
- Documentation fixes because deprecation warnings were not showing up on haddocks for GHC.TypeLits.List.
Version 0.3.0.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.3.0.0
- Added extra witnesses inside the constructors of
(:<=?). - Allowed functions to polymorphically expect
p ninstead ofProxy nwhenever possible. - Soft deprecation of GHC.TypeLits.Witnesses, in case people want to use the functionality of singletons without the full library.
- Formal deprecation of GHC.TypeLits.List, with migration information, because it’s just so much more unweidly than using singletons.
Version 0.2.3.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.3.0
- Added the
GHC.TypeLits.Comparemodule for refining bounds and proving inequalities onKnownNats and associated utility functions.
Version 0.2.2.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.2.0
- Removed redundant
KnownNatsandKnownSymbolsconstraints forsameNatsandsameSymbols.
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
NatListandSymbolList.
Version 0.2.0.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.0.0
-
Breaking: Changed the name of
someNatsVal'tosomeNatsValPos, to break away from the “just add'” anti-pattern and to make the function name a bit more meaningful. -
Added
reifyNats', a “safe” version ofreifyNats. Ideally,reifyNatsshould be the safe one, but its connection toreifyNatfrom the reflection package is very strong and worth preserving, I think.
Version 0.1.2.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.1.2.0
-
Added
mapNatList'andmapSymbolList'companions tomapNatListandmapSymbolList; they useNatListandSymbolListinstead of Rank-2 types, so they can work better with function composition with(.)and other things that Rank-2 types would have trouble with. -
Added
sameNatsandsameSymbols, modeled aftersameNatandsameSymbol. They provide witnesses to GHC thatKnownNats 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, andSomeSymbols. It really doesn’t make any sense for them to be lazy.
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.
Version 0.1.0.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.1.0.0
- Initial version.