numeric-prelude- An experimental alternative hierarchy of numeric type classes

Safe HaskellSafe-Infered



Lazy Peano numbers represent natural numbers inclusive infinity. Since they are lazily evaluated, they are optimally for use as number type of genericLength



data T Source


Succ T 


Bounded T 
Enum T 
Eq T 
Integral T 
Num T 
Ord T 
Read T 
Real T 
Show T 
Ix T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 
C T 

add :: T -> T -> TSource

sub :: T -> T -> TSource

subNeg :: T -> T -> (Bool, T)Source

mul :: T -> T -> TSource

fromPosEnum :: (C a, Enum a) => a -> TSource

toPosEnum :: (C a, Enum a) => T -> aSource

ifLazy :: Bool -> T -> T -> TSource

If all values are completely defined, then it holds

 if b then x else y == ifLazy b x y

However if b is undefined, then it is at least known that the result is larger than min x y.

argMinFull :: (T, a) -> (T, a) -> (T, a)Source

cf. To how to find the shortest list in a list of lists efficiently, this means, also in the presence of infinite lists.

argMin :: (T, a) -> (T, a) -> aSource

On equality the first operand is returned.

argMinimum :: [(T, a)] -> aSource



On equality the first operand is returned.

argMaximum :: [(T, a)] -> aSource

isAscendingFiniteList :: [T] -> BoolSource

x0 <= x1 && x1 <= x2 ... for possibly infinite numbers in finite lists.

toListMaybe :: a -> T -> [Maybe a]Source

glue :: T -> T -> (T, (Bool, T))Source

In glue x y == (z,(b,r)) z represents min x y, r represents max x y - min x y, and x<=y == b.

Cf. Numeric.NonNegative.Chunky

data Valuable a Source




costs :: T
value :: a


Eq a => Eq (Valuable a) 
Ord a => Ord (Valuable a) 
Show a => Show (Valuable a) 

(&&~) :: Valuable Bool -> Valuable Bool -> Valuable BoolSource

Compute '(&&)' with minimal costs.