type-digits: Arbitrary-base type-level digits

[ bsd3, library, type-system ] [ Propose Tags ]

This is a workaround until type-level literals (specifically naturals) are more fully supported. The main difference is that these types-level digits and numerals can be inspected/case-discriminated within type family instances. See the type-ord and type-cereal packages for use cases; they ultimately support the yoko package. Arbitrary type-level digits, for when the radix itself doesn't actually matter. It's currently base-128, because that seemed to best expedite the compilation of the modules with which I using this package. Please let me know what you find if you experiment with this. Type.Digits.radix is the (arbitrary) radix. Type.Digits.digit computes the NameG of a digit from its value (assuming its less than the radix). Combinators are provided to compute a full type-level numeral from values (potentially) larger than the radix. The digits themselves all take less significant numeral as an argument. I chose this over minimal digits in promoted lists because I wanted to keep the actual encoding of type-level numeral smaller; they get quite large with some of my uses and the type family computation becomes quite slow.


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1,,, 0.2, 0.3
Dependencies base (>=4 && <5), template-haskell, type-spine (>=0.2) [details]
License BSD-3-Clause
Author Nicolas Frisby <nicolas.frisby@gmail.com>
Maintainer Nicolas Frisby <nicolas.frisby@gmail.com>
Category Type System
Uploaded by NicolasFrisby at 2013-07-31T04:40:07Z
Reverse Dependencies 4 direct, 1 indirect [details]
Downloads 3473 total (8 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]