typelits-witnesses
Existential witnesses, singletons, and classes for operations on GHC TypeLits
https://github.com/mstksg/typelits-witnesses
LTS Haskell 23.1: | 0.4.1.0 |
Stackage Nightly 2024-12-27: | 0.4.1.0 |
Latest on Hackage: | 0.4.1.0 |
typelits-witnesses-0.4.1.0@sha256:ec237703b0a9bee94464c1797c241553f38755fce5cfc9c4cdd61354b15bcac5,1773
Module 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
Nat
andSymbol
, for when you need some simple functionality without wanting to invoke the entire singletons library. - Operations for manipulating these singletons and
KnownNat
andKnownSymbol
instances, such as addition and multiplication of singletons/KnownNat
instances. - Operations for the comparison of
Nat
s 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
SSymbol
andSNat
from 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
(%*)
minusSNat
fixed- 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
Nat
andSymbol
. - 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
TypeIsStar
changes. - 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 m
in GHC.TypeLits.Compare now are able to take different “proxy” types (p
andq
).
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 n
instead ofProxy n
whenever 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.Compare
module for refining bounds and proving inequalities onKnownNat
s and associated utility functions.
Version 0.2.2.0
https://github.com/mstksg/typelits-witnesses/releases/tag/v0.2.2.0
- Removed redundant
KnownNats
andKnownSymbols
constraints forsameNats
andsameSymbols
.
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
NatList
andSymbolList
.
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,reifyNats
should be the safe one, but its connection toreifyNat
from 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 tomapNatList
andmapSymbolList
; they useNatList
andSymbolList
instead 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
sameNats
andsameSymbols
, modeled aftersameNat
andsameSymbol
. They provide witnesses to GHC thatKnownNat
s 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.