type-level-0.2.4: Type-level programming library

Portability | non-portable (TypeOperators)
Stability | experimental
Maintainer | alfonso.acosta@gmail.com
Safe Haskell | None

Data.TypeLevel.Num.Reps

Contents

- Decimal representation

Description

Type-level numerical representations. Currently, only decimals are supported.

Synopsis

- data D0
- data D1
- data D2
- data D3
- data D4
- data D5
- data D6
- data D7
- data D8
- data D9
- data a :* b = a :* b

# Decimal representation

data D0

Decimal digit zero

Instances

Show D0 |
Typeable D0 |
Lift D0 |
Log10 D9 D0 |
Log10 D8 D0 |
Log10 D7 D0 |
Log10 D6 D0 |
Log10 D5 D0 |
Log10 D4 D0 |
Log10 D3 D0 |
Log10 D2 D0 |
Log10 D1 D0 |
Exp10 D0 D1 |
Trich D9 D0 GT |
Trich D8 D0 GT |
Trich D7 D0 GT |
Trich D6 D0 GT |
Trich D5 D0 GT |
Trich D4 D0 GT |
Trich D3 D0 GT |
Trich D2 D0 GT |
Trich D1 D0 GT |
Trich D0 D9 LT |
Trich D0 D8 LT |
Trich D0 D7 LT |
Trich D0 D6 LT |
Trich D0 D5 LT |
Trich D0 D4 LT |
Trich D0 D3 LT |
Trich D0 D2 LT |
Trich D0 D1 LT |
Trich D0 D0 EQ |
Nat b => ExpBase b D0 D1 |
DivMod10 D9 D0 D9 |
DivMod10 D8 D0 D8 |
DivMod10 D7 D0 D7 |
DivMod10 D6 D0 D6 |
DivMod10 D5 D0 D5 |
DivMod10 D4 D0 D4 |
DivMod10 D3 D0 D3 |
DivMod10 D2 D0 D2 |
DivMod10 D1 D0 D1 |
DivMod10 D0 D0 D0 |
Nat y => Mul D0 y D0 |
Exp10 D9 (:* (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) D0) |
Exp10 D8 (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) |
Exp10 D7 (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) |
Exp10 D6 (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) |
Exp10 D5 (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) |
Exp10 D4 (:* (:* (:* (:* D1 D0) D0) D0) D0) |
Exp10 D3 (:* (:* (:* D1 D0) D0) D0) |
Exp10 D2 (:* (:* D1 D0) D0) |
Exp10 D1 (:* D1 D0) |
Pos (:* yi yl) => Trich D0 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D0 GT |
(Pred (:* xi xl) x', Exp10 x' (:* (:* (:* (:* (:* (:* (:* (:* (:* y D0) D0) D0) D0) D0) D0) D0) D0) D0)) => Exp10 (:* xi xl) (:* (:* (:* (:* (:* (:* (:* (:* (:* (:* y D0) D0) D0) D0) D0) D0) D0) D0) D0) D0) |

data D1

Decimal digit one

Instances

Show D1 |
Typeable D1 |
Lift D1 |
Log10 D1 D0 |
Exp10 D0 D1 |
Trich D9 D1 GT |
Trich D8 D1 GT |
Trich D7 D1 GT |
Trich D6 D1 GT |
Trich D5 D1 GT |
Trich D4 D1 GT |
Trich D3 D1 GT |
Trich D2 D1 GT |
Trich D1 D9 LT |
Trich D1 D8 LT |
Trich D1 D7 LT |
Trich D1 D6 LT |
Trich D1 D5 LT |
Trich D1 D4 LT |
Trich D1 D3 LT |
Trich D1 D2 LT |
Trich D1 D1 EQ |
Trich D1 D0 GT |
Trich D0 D1 LT |
Nat b => ExpBase b D1 b |
Nat b => ExpBase b D0 D1 |
DivMod10 D1 D0 D1 |
Nat y => Mul D1 y y |
Exp10 D9 (:* (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) D0) |
Exp10 D8 (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) |
Exp10 D7 (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) |
Exp10 D6 (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) |
Exp10 D5 (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) |
Exp10 D4 (:* (:* (:* (:* D1 D0) D0) D0) D0) |
Exp10 D3 (:* (:* (:* D1 D0) D0) D0) |
Exp10 D2 (:* (:* D1 D0) D0) |
Exp10 D1 (:* D1 D0) |
Pos (:* yi yl) => Trich D1 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D1 GT |
Nat (:* D1 l) => DivMod10 (:* D1 l) D1 l |

data D2

Decimal digit two

Instances

Show D2 |
Typeable D2 |
Lift D2 |
Log10 D2 D0 |
Trich D9 D2 GT |
Trich D8 D2 GT |
Trich D7 D2 GT |
Trich D6 D2 GT |
Trich D5 D2 GT |
Trich D4 D2 GT |
Trich D3 D2 GT |
Trich D2 D9 LT |
Trich D2 D8 LT |
Trich D2 D7 LT |
Trich D2 D6 LT |
Trich D2 D5 LT |
Trich D2 D4 LT |
Trich D2 D3 LT |
Trich D2 D2 EQ |
Trich D2 D1 GT |
Trich D2 D0 GT |
Trich D1 D2 LT |
Trich D0 D2 LT |
Mul b b r => ExpBase b D2 r |
DivMod10 D2 D0 D2 |
Add y y z => Mul D2 y z |
Exp10 D2 (:* (:* D1 D0) D0) |
Pos (:* yi yl) => Trich D2 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D2 GT |
Nat (:* D2 l) => DivMod10 (:* D2 l) D2 l |

data D3

Decimal digit three

Instances

Show D3 |
Typeable D3 |
Lift D3 |
Log10 D3 D0 |
Trich D9 D3 GT |
Trich D8 D3 GT |
Trich D7 D3 GT |
Trich D6 D3 GT |
Trich D5 D3 GT |
Trich D4 D3 GT |
Trich D3 D9 LT |
Trich D3 D8 LT |
Trich D3 D7 LT |
Trich D3 D6 LT |
Trich D3 D5 LT |
Trich D3 D4 LT |
Trich D3 D3 EQ |
Trich D3 D2 GT |
Trich D3 D1 GT |
Trich D3 D0 GT |
Trich D2 D3 LT |
Trich D1 D3 LT |
Trich D0 D3 LT |
(Mul r b r', ExpBase b D2 r) => ExpBase b D3 r' |
DivMod10 D3 D0 D3 |
(Add z y z', Mul D2 y z) => Mul D3 y z' |
Exp10 D3 (:* (:* (:* D1 D0) D0) D0) |
Pos (:* yi yl) => Trich D3 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D3 GT |
Nat (:* D3 l) => DivMod10 (:* D3 l) D3 l |

data D4

Decimal digit four

Instances

Show D4 |
Typeable D4 |
Lift D4 |
Log10 D4 D0 |
Trich D9 D4 GT |
Trich D8 D4 GT |
Trich D7 D4 GT |
Trich D6 D4 GT |
Trich D5 D4 GT |
Trich D4 D9 LT |
Trich D4 D8 LT |
Trich D4 D7 LT |
Trich D4 D6 LT |
Trich D4 D5 LT |
Trich D4 D4 EQ |
Trich D4 D3 GT |
Trich D4 D2 GT |
Trich D4 D1 GT |
Trich D4 D0 GT |
Trich D3 D4 LT |
Trich D2 D4 LT |
Trich D1 D4 LT |
Trich D0 D4 LT |
(Mul r b r', ExpBase b D3 r) => ExpBase b D4 r' |
DivMod10 D4 D0 D4 |
(Add z y z', Mul D3 y z) => Mul D4 y z' |
Exp10 D4 (:* (:* (:* (:* D1 D0) D0) D0) D0) |
Pos (:* yi yl) => Trich D4 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D4 GT |
Nat (:* D4 l) => DivMod10 (:* D4 l) D4 l |

data D5

Decimal digit five

Instances

Show D5 |
Typeable D5 |
Lift D5 |
Log10 D5 D0 |
Trich D9 D5 GT |
Trich D8 D5 GT |
Trich D7 D5 GT |
Trich D6 D5 GT |
Trich D5 D9 LT |
Trich D5 D8 LT |
Trich D5 D7 LT |
Trich D5 D6 LT |
Trich D5 D5 EQ |
Trich D5 D4 GT |
Trich D5 D3 GT |
Trich D5 D2 GT |
Trich D5 D1 GT |
Trich D5 D0 GT |
Trich D4 D5 LT |
Trich D3 D5 LT |
Trich D2 D5 LT |
Trich D1 D5 LT |
Trich D0 D5 LT |
(Mul r b r', ExpBase b D4 r) => ExpBase b D5 r' |
DivMod10 D5 D0 D5 |
(Add z y z', Mul D4 y z) => Mul D5 y z' |
Exp10 D5 (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) |
Pos (:* yi yl) => Trich D5 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D5 GT |
Nat (:* D5 l) => DivMod10 (:* D5 l) D5 l |

data D6

Decimal digit six

Instances

Show D6 |
Typeable D6 |
Lift D6 |
Log10 D6 D0 |
Trich D9 D6 GT |
Trich D8 D6 GT |
Trich D7 D6 GT |
Trich D6 D9 LT |
Trich D6 D8 LT |
Trich D6 D7 LT |
Trich D6 D6 EQ |
Trich D6 D5 GT |
Trich D6 D4 GT |
Trich D6 D3 GT |
Trich D6 D2 GT |
Trich D6 D1 GT |
Trich D6 D0 GT |
Trich D5 D6 LT |
Trich D4 D6 LT |
Trich D3 D6 LT |
Trich D2 D6 LT |
Trich D1 D6 LT |
Trich D0 D6 LT |
(Mul r b r', ExpBase b D5 r) => ExpBase b D6 r' |
DivMod10 D6 D0 D6 |
(Add z y z', Mul D5 y z) => Mul D6 y z' |
Exp10 D6 (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) |
Pos (:* yi yl) => Trich D6 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D6 GT |
Nat (:* D6 l) => DivMod10 (:* D6 l) D6 l |

data D7

Decimal digit seven

Instances

Show D7 |
Typeable D7 |
Lift D7 |
Log10 D7 D0 |
Trich D9 D7 GT |
Trich D8 D7 GT |
Trich D7 D9 LT |
Trich D7 D8 LT |
Trich D7 D7 EQ |
Trich D7 D6 GT |
Trich D7 D5 GT |
Trich D7 D4 GT |
Trich D7 D3 GT |
Trich D7 D2 GT |
Trich D7 D1 GT |
Trich D7 D0 GT |
Trich D6 D7 LT |
Trich D5 D7 LT |
Trich D4 D7 LT |
Trich D3 D7 LT |
Trich D2 D7 LT |
Trich D1 D7 LT |
Trich D0 D7 LT |
(Mul r b r', ExpBase b D6 r) => ExpBase b D7 r' |
DivMod10 D7 D0 D7 |
(Add z y z', Mul D6 y z) => Mul D7 y z' |
Exp10 D7 (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) |
Pos (:* yi yl) => Trich D7 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D7 GT |
Nat (:* D7 l) => DivMod10 (:* D7 l) D7 l |

data D8

Decimal digit eight

Instances

Show D8 |
Typeable D8 |
Lift D8 |
Log10 D8 D0 |
Trich D9 D8 GT |
Trich D8 D9 LT |
Trich D8 D8 EQ |
Trich D8 D7 GT |
Trich D8 D6 GT |
Trich D8 D5 GT |
Trich D8 D4 GT |
Trich D8 D3 GT |
Trich D8 D2 GT |
Trich D8 D1 GT |
Trich D8 D0 GT |
Trich D7 D8 LT |
Trich D6 D8 LT |
Trich D5 D8 LT |
Trich D4 D8 LT |
Trich D3 D8 LT |
Trich D2 D8 LT |
Trich D1 D8 LT |
Trich D0 D8 LT |
(Mul r b r', ExpBase b D7 r) => ExpBase b D8 r' |
DivMod10 D8 D0 D8 |
(Add z y z', Mul D7 y z) => Mul D8 y z' |
Exp10 D8 (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) |
Pos (:* yi yl) => Trich D8 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D8 GT |
Nat (:* D8 l) => DivMod10 (:* D8 l) D8 l |

data D9

Decimal digit nine

Instances

Show D9 |
Typeable D9 |
Lift D9 |
Log10 D9 D0 |
Trich D9 D9 EQ |
Trich D9 D8 GT |
Trich D9 D7 GT |
Trich D9 D6 GT |
Trich D9 D5 GT |
Trich D9 D4 GT |
Trich D9 D3 GT |
Trich D9 D2 GT |
Trich D9 D1 GT |
Trich D9 D0 GT |
Trich D8 D9 LT |
Trich D7 D9 LT |
Trich D6 D9 LT |
Trich D5 D9 LT |
Trich D4 D9 LT |
Trich D3 D9 LT |
Trich D2 D9 LT |
Trich D1 D9 LT |
Trich D0 D9 LT |
(Mul r b r', ExpBase b D8 r) => ExpBase b D9 r' |
DivMod10 D9 D0 D9 |
(Add z y z', Mul D8 y z) => Mul D9 y z' |
Exp10 D9 (:* (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) D0) |
Pos (:* yi yl) => Trich D9 (:* yi yl) LT |
Pos (:* yi yl) => Trich (:* yi yl) D9 GT |
Nat (:* D9 l) => DivMod10 (:* D9 l) D9 l |

data a :* b

Connective to glue digits together. For example, `D1 :* D0 :* D0` represents the decimal number 100

Constructors

a :* b |

Instances

Typeable2 :* |
Exp10 D9 (:* (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) D0) |
Exp10 D8 (:* (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) D0) |
Exp10 D7 (:* (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) D0) |
Exp10 D6 (:* (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) D0) |
Exp10 D5 (:* (:* (:* (:* (:* D1 D0) D0) D0) D0) D0) |
Exp10 D4 (:* (:* (:* (:* D1 D0) D0) D0) D0) |
Exp10 D3 (:* (:* (:* D1 D0) D0) D0) |
Exp10 D2 (:* (:* D1 D0) D0) |
Exp10 D1 (:* D1 D0) |
Pos (:* yi yl) => Trich D9 (:* yi yl) LT |
Pos (:* yi yl) => Trich D8 (:* yi yl) LT |
Pos (:* yi yl) => Trich D7 (:* yi yl) LT |
Pos (:* yi yl) => Trich D6 (:* yi yl) LT |
Pos (:* yi yl) => Trich D5 (:* yi yl) LT |
Pos (:* yi yl) => Trich D4 (:* yi yl) LT |
Pos (:* yi yl) => Trich D3 (:* yi yl) LT |
Pos (:* yi yl) => Trich D2 (:* yi yl) LT |
Pos (:* yi yl) => Trich D1 (:* yi yl) LT |
Pos (:* yi yl) => Trich D0 (:* yi yl) LT |
(Nat b, Pos (:* ei el), Nat r, Mul b r r', Pred (:* ei el) e', ExpBase b e' r) => ExpBase b (:* ei el) r' |
(Show a, Show b) => Show (:* a b) |
(Lift a, Lift b) => Lift (:* a b) |
(Pos (:* xi xl), Pred y y', Log10 xi y') => Log10 (:* xi xl) y |
Pos (:* yi yl) => Trich (:* yi yl) D9 GT |
Pos (:* yi yl) => Trich (:* yi yl) D8 GT |
Pos (:* yi yl) => Trich (:* yi yl) D7 GT |
Pos (:* yi yl) => Trich (:* yi yl) D6 GT |
Pos (:* yi yl) => Trich (:* yi yl) D5 GT |
Pos (:* yi yl) => Trich (:* yi yl) D4 GT |
Pos (:* yi yl) => Trich (:* yi yl) D3 GT |
Pos (:* yi yl) => Trich (:* yi yl) D2 GT |
Pos (:* yi yl) => Trich (:* yi yl) D1 GT |
Pos (:* yi yl) => Trich (:* yi yl) D0 GT |
Nat (:* D9 l) => DivMod10 (:* D9 l) D9 l |
Nat (:* D8 l) => DivMod10 (:* D8 l) D8 l |
Nat (:* D7 l) => DivMod10 (:* D7 l) D7 l |
Nat (:* D6 l) => DivMod10 (:* D6 l) D6 l |
Nat (:* D5 l) => DivMod10 (:* D5 l) D5 l |
Nat (:* D4 l) => DivMod10 (:* D4 l) D4 l |
Nat (:* D3 l) => DivMod10 (:* D3 l) D3 l |
Nat (:* D2 l) => DivMod10 (:* D2 l) D2 l |
Nat (:* D1 l) => DivMod10 (:* D1 l) D1 l |
(Pos (:* xi xl), Nat y, Mul xi y z, Mul10 z z10, Mul xl y dy, Add dy z10 z') => Mul (:* xi xl) y z' |
(Pred (:* xi xl) x', Exp10 x' (:* (:* (:* (:* (:* (:* (:* (:* (:* y D0) D0) D0) D0) D0) D0) D0) D0) D0)) => Exp10 (:* xi xl) (:* (:* (:* (:* (:* (:* (:* (:* (:* (:* y D0) D0) D0) D0) D0) D0) D0) D0) D0) D0) |
(Pos (:* xi xl), Pos (:* yi yl), Trich xl yl rl, Trich xi yi ri, CS ri rl r) => Trich (:* xi xl) (:* yi yl) r |
(Nat (:* x l), Nat (:* (:* x l) l')) => DivMod10 (:* (:* x l) l') (:* x l) l' |