Name: type-digits
Version: 0.3
License: BSD3
License-File: LICENSE
Author: Nicolas Frisby
Maintainer: Nicolas Frisby
Category: Type System
Synopsis: Arbitrary-base type-level digits
Description: 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.
Cabal-Version: >= 1.6.0.1
Build-Type: Simple
Library
Build-Depends: base >= 4 && < 5, template-haskell
Build-Depends: type-spine >= 0.2
Exposed-Modules: Type.Digits, Type.Digits.Aux, Type.Digits.Stage0, Type.Digits.Stage1