type-prelude-0.1: Partial port of prelude to the type level. Requires GHC 7.6.1.

Safe HaskellNone

Prelude.Type.Integer

Synopsis

Documentation

Two's complement integers

(One Ones) and (Zero Zeros) are malformed Integers. They can cause bugs if passed as a paramter and they are never returned. IntegerCons builds integers that are well formed and should be used instead of One or Zero

data Integer Source

Constructors

One Integer 
Zero Integer 
Ones 
Zeros 

Instances

Value Integer Zeros Integer 
Value Integer Ones Integer 
(Complement Bool (IntegerHead a) head, Complement Integer (IntegerTail a) tail, ~ Integer b (IntegerCons head tail)) => Complement Integer a b 
Complement Integer Zeros Ones 
Complement Integer Ones Zeros 
Odd Integer Zeros False 
Odd Integer Ones True 
~ Bool p (IntegerHead i) => Even Integer i p 
(Signum Integer a s, Case Integer s (: (Alternative Integer Constraint) (--> Integer Constraint Ones (Negate Integer a b)) (: (Alternative Integer Constraint) (Otherwise Integer Constraint (~ Integer a b)) ([] (Alternative Integer Constraint))))) => Abs Integer a b 
Signum' Integer Ones Ones 
Signum Integer Zeros Zeros 
(Complement Integer a b, + Integer b (I 1) c) => Negate Integer a c 
FromEnum Integer i i 
ToEnum Integer i i 
Kind Integer a Integer 
(~ Integer zeros Zeros, ~ Bool true True) => Match Integer Zeros zeros true 
Match Integer Zeros Ones False 
(~ Integer ones Ones, ~ Bool true True) => Match Integer Ones ones true 
Match Integer Ones Zeros False 
QuotRem Integer a b ((,) Integer Integer q r) => Quot Integer a b q 
QuotRem Integer a b ((,) Integer Integer q r) => Rem Integer a b r 
Error Symbol "Division by zero" => QuotRem Integer a Zeros b 
(Integer .&. Zeros) a Zeros 
(Integer .&. Ones) a a 
(Xor Bool (IntegerHead a) (IntegerHead b) c, Xor Integer (IntegerTail a) (IntegerTail b) d, ~ Integer e (IntegerCons c d)) => Xor Integer a b e 
Xor Integer Zeros a a 
Complement Integer a b => Xor Integer Ones a b 
(Abs Integer x x', Abs Integer y y', Gcd' x' y' z) => Gcd Integer x y z 
Error Symbol "Gcd 0 0 is undefined" => Gcd Integer Zeros Zeros c 
(Integer * Zeros) a Zeros 
Negate Integer a prod => (Integer * Ones) a prod 
(Complement Integer b cb, AddWithCarry True a cb dif) => Minus Integer a b dif 
AddWithCarry False a b sum => (Integer + a) b sum 
If (< Integer b a) (~ [Integer] l ([] Integer)) (+ Integer (I 1) a c, EnumFromTo Integer c b k, ~ [Integer] l (: Integer a k)) => EnumFromTo Integer a b l 
(Minus Integer a b d, Signum Integer d s, Case Integer s (: (Alternative Integer Constraint) (--> Integer Constraint Ones (~ Ordering p LT)) (: (Alternative Integer Constraint) (--> Integer Constraint Zeros (~ Ordering p EQ)) (: (Alternative Integer Constraint) (--> Integer Constraint (One Zeros) (~ Ordering p GT)) (: (Alternative Integer Constraint) (Otherwise Integer Constraint (Error ((,) Symbol Integer) ((,) Symbol Integer "Signum returned" s))) ([] (Alternative Integer Constraint))))))) => Compare Integer a b p 
~ Bool p False => (Integer == i) j p 
(Integer == Zeros) Zeros True 
(Integer == Ones) Ones True 
If (> Integer i (I 0)) (ShowsInteger i x y) (Negate Integer i j, ShowsInteger j x y', ~ [Symbol] y (: Symbol "-" y')) => Shows Integer i x y 
(Minus Integer c a x, EnumFromToBy Integer a b x l) => EnumFromThenTo Integer a c b l 
Shows Integer Zeros x (: Symbol "0" x) 
(Abs Integer a a', Abs Integer b b', QuotRem' a' b' q r, Signum Integer a sa, Signum Integer b sb, * Integer sa r rem, * Integer sa q q', * Integer sb q' quot) => QuotRem Integer a b ((,) Integer Integer quot rem) 
Signum' Integer Zeros (One Zeros) 
Match Integer Zeros (Zero j) False 
Match Integer Zeros (One j) False 
Match Integer Ones (Zero j) False 
Match Integer Ones (One j) False 
Value Integer i Integer => Value Integer (Zero i) Integer 
Value Integer i Integer => Value Integer (One i) Integer 
Odd Integer (Zero i) False 
Odd Integer (One i) True 
Signum' Integer i s => Signum' Integer (Zero i) s 
Signum' Integer i s => Signum' Integer (One i) s 
Signum Integer i s => Signum Integer (Zero i) s 
(~ Integer zero_j (Zero j), Match Integer i j p) => Match Integer (Zero i) zero_j p 
Match Integer (Zero i) Zeros False 
Match Integer (Zero i) Ones False 
(~ Integer one_j (One j), Match Integer i j p) => Match Integer (One i) one_j p 
Match Integer (One i) Zeros False 
Match Integer (One i) Ones False 
(.&. Bool False (IntegerHead b) c, .&. Integer a (IntegerTail b) d, ~ Integer e (IntegerCons c d)) => (Integer .&. (Zero a)) b e 
(.&. Bool True (IntegerHead b) c, .&. Integer a (IntegerTail b) d, ~ Integer e (IntegerCons c d)) => (Integer .&. (One a)) b e 
(* Integer i a b, ~ Integer prod (IntegerCons False b)) => (Integer * (Zero i)) a prod 
(* Integer i a b, ~ Integer b' (IntegerCons False b), + Integer a b' prod) => (Integer * (One i)) a prod 
(Integer * (One Zeros)) a a 
Match Integer (Zero i) (One i) False 
Match Integer (One i) (Zero j) False 
== Integer i j p => (Integer == (Zero i)) (Zero j) p 
== Integer i j p => (Integer == (One i)) (One j) p 

type family I a :: IntegerSource

type family IntegerCons b i :: IntegerSource

type family IntegerHead i :: BoolSource

type family IntegerTail i :: IntegerSource