Copyright | (c) Henning Thielemann 2007-2012 |
---|---|
Maintainer | numericprelude@henning-thielemann.de |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell98 |
Lazy Peano numbers represent natural numbers inclusive infinity.
Since they are lazily evaluated,
they are optimally for use as number type of genericLength
et.al.
- data T
- infinity :: T
- err :: String -> String -> a
- add :: T -> T -> T
- sub :: T -> T -> T
- subNeg :: T -> T -> (Bool, T)
- mul :: T -> T -> T
- fromPosEnum :: (C a, Enum a) => a -> T
- toPosEnum :: (C a, Enum a) => T -> a
- ifLazy :: Bool -> T -> T -> T
- argMinFull :: (T, a) -> (T, a) -> (T, a)
- argMin :: (T, a) -> (T, a) -> a
- argMinimum :: [(T, a)] -> a
- argMaxFull :: (T, a) -> (T, a) -> (T, a)
- argMax :: (T, a) -> (T, a) -> a
- argMaximum :: [(T, a)] -> a
- isAscendingFiniteList :: [T] -> Bool
- isAscendingFiniteNumbers :: [T] -> Bool
- toListMaybe :: a -> T -> [Maybe a]
- glue :: T -> T -> (T, (Bool, T))
- isAscending :: [T] -> Bool
- data Valuable a = Valuable {}
- increaseCosts :: T -> Valuable a -> Valuable a
- (&&~) :: Valuable Bool -> Valuable Bool -> Valuable Bool
- andW :: [Valuable Bool] -> Valuable Bool
- leW :: T -> T -> Valuable Bool
- isAscendingW :: [T] -> Valuable Bool
- notImplemented :: String -> a
Documentation
fromPosEnum :: (C a, Enum a) => a -> T Source
ifLazy :: Bool -> T -> T -> T Source
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. http://www.haskell.org/pipermail/haskell-cafe/2006-October/018753.html
argMinimum :: [(T, a)] -> a Source
argMaxFull :: (T, a) -> (T, a) -> (T, a) Source
argMaximum :: [(T, a)] -> a Source
isAscendingFiniteList :: [T] -> Bool Source
x0 <= x1 && x1 <= x2 ...
for possibly infinite numbers in finite lists.
isAscendingFiniteNumbers :: [T] -> Bool Source
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
isAscending :: [T] -> Bool Source
increaseCosts :: T -> Valuable a -> Valuable a Source
(&&~) :: Valuable Bool -> Valuable Bool -> Valuable Bool infixr 3 Source
Compute '(&&)' with minimal costs.
isAscendingW :: [T] -> Valuable Bool Source
notImplemented :: String -> a Source