Ranged values
- data Ord a => Range a = Range {
- lowerBound :: Maybe a
- upperBound :: Maybe a
- rangeOp :: Ord a => (Range a -> Range a) -> Range a -> Range a
- rangeOp2 :: Ord a => (Range a -> Range a -> Range a) -> Range a -> Range a -> Range a
- mapMonotonic :: (Ord a, Ord b) => (a -> b) -> Range a -> Range b
- rangeMul :: (Ord a, Num a) => Range a -> Range a -> Range a
- emptyRange :: (Ord a, Num a) => Range a
- fullRange :: Ord a => Range a
- range :: Ord a => a -> a -> Range a
- rangeByRange :: Ord a => Range a -> Range a -> Range a
- singletonRange :: Ord a => a -> Range a
- naturalRange :: (Ord a, Num a) => Range a
- negativeRange :: (Ord a, Num a) => Range a
- rangeSize :: (Ord a, Num a) => Range a -> Maybe a
- isEmpty :: Ord a => Range a -> Bool
- isFull :: Ord a => Range a -> Bool
- isBounded :: Ord a => Range a -> Bool
- isSingleton :: Ord a => Range a -> Bool
- isSubRangeOf :: Ord a => Range a -> Range a -> Bool
- isNatural :: (Ord a, Num a) => Range a -> Bool
- isNegative :: (Ord a, Num a) => Range a -> Bool
- inRange :: Ord a => a -> Range a -> Bool
- rangeGap :: (Ord a, Num a) => Range a -> Range a -> Range a
- (\/) :: Ord a => Range a -> Range a -> Range a
- liftMaybe2 :: (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a
- (/\) :: Ord a => Range a -> Range a -> Range a
- disjoint :: (Ord a, Num a) => Range a -> Range a -> Bool
- rangeLess :: Ord a => Range a -> Range a -> Bool
- rangeLessEq :: Ord a => Range a -> Range a -> Bool
- rangeAddUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range a
- rangeAddSigned :: (Ord a, Num a, Bounded a, Bits a) => Range a -> Range a -> Range a
- rangeSubUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range a
- rangeNegUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a
- rangeNegSigned :: (Ord a, Num a, Bounded a) => Range a -> Range a
- rangeOrUnsignedCheap :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range a
- minOrUnsigned :: (Ord a, Num a, Bits a) => a -> a -> a -> a -> a
- maxOrUnsigned :: (Ord a, Num a, Bits a) => a -> a -> a -> a -> a
- rangeOrUnsignedAccurate :: (Ord a, Num a, Bits a, Bounded a) => Range a -> Range a -> Range a
- rangeAndUnsignedCheap :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range a
- rangeXorUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range a
- rangeProp1 :: (Ord a, Bounded a) => (a -> a -> Range a) -> Range a -> Range a
- rangeProp2 :: (Ord a, Bounded a) => (a -> a -> a -> a -> Range a) -> Range a -> Range a -> Range a
- rangeMax :: Ord a => Range a -> Range a -> Range a
- rangeMin :: Ord a => Range a -> Range a -> Range a
- rangeMod :: (Num a, Ord a, Enum a) => Range a -> Range a -> Range a
- rangeRem :: (Num a, Ord a, Enum a) => Range a -> Range a -> Range a
- showBound :: Show a => Maybe a -> String
- showRange :: (Show a, Ord a) => Range a -> String
- prop_arith1 :: (forall a. Num a => a -> a) -> Range Int -> Property
- prop_arith2 :: (forall a. Num a => a -> a -> a) -> Range Int -> Range Int -> Property
- rangePropagationSafetyPre :: (Random a, Ord a, Show a, Bounded a, Random b, Ord b, Show b, Bounded b, Ord c) => (a -> b -> c) -> (Range a -> Range b -> Range c) -> (a -> b -> Bool) -> Range a -> Range b -> Property
- rangePropSafety1 :: (Ord a, Show a, Random a, Bounded a, Ord b) => (a -> b) -> (Range a -> Range b) -> Range a -> Property
- uppBound :: (Bounded a, Ord a) => Range a -> a
- lowBound :: (Bounded a, Ord a) => Range a -> a
- fromRange :: (Random a, Bounded a, Ord a) => Range a -> Gen a
Documentation
Range | |
|
emptyRange :: (Ord a, Num a) => Range aSource
singletonRange :: Ord a => a -> Range aSource
naturalRange :: (Ord a, Num a) => Range aSource
negativeRange :: (Ord a, Num a) => Range aSource
isSingleton :: Ord a => Range a -> BoolSource
isNatural :: (Ord a, Num a) => Range a -> BoolSource
Checks whether a range is a sub-range of the natural numbers.
isNegative :: (Ord a, Num a) => Range a -> BoolSource
Checks whether a range is a sub-range of the negative numbers.
liftMaybe2 :: (a -> a -> a) -> Maybe a -> Maybe a -> Maybe aSource
rangeLess :: Ord a => Range a -> Range a -> BoolSource
r1 `rangeLess` r2:
Checks if all elements of r1
are less than all elements of r2
.
rangeLessEq :: Ord a => Range a -> Range a -> BoolSource
r1 `rangeLessEq` r2:
Checks if all elements of r1
are less than or equal to all elements of
r2
.
rangeAddUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource
rangeAddUnsigned
correctly and accurately propagates range
information through an unsigned addition. Code is borrowed from
Hacker's Delight.
rangeAddSigned :: (Ord a, Num a, Bounded a, Bits a) => Range a -> Range a -> Range aSource
rangeAddSigned
correctly and accurately propagates range
information through a signed addition. Code is borrowed from
Hacker's Delight.
rangeSubUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource
rangeSubUnsigned
propagates range information through unsigned
subtraction. Code is borrowed from Hacker's Delight
rangeNegUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range aSource
Propagates range information through unsigned negation. Code from Hacker's Delight
rangeNegSigned :: (Ord a, Num a, Bounded a) => Range a -> Range aSource
Propagates range information through signed negation. Code from Hacker's Delight.
rangeOrUnsignedCheap :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource
Cheap and inaccurate range propagation for .|.
on unsigned numbers.
Code from Hacker's Delight
minOrUnsigned :: (Ord a, Num a, Bits a) => a -> a -> a -> a -> aSource
Accurate lower bound for .|.
on unsigned numbers.
maxOrUnsigned :: (Ord a, Num a, Bits a) => a -> a -> a -> a -> aSource
Accurate upper bound for .|.
on unsigned numbers.
rangeAndUnsignedCheap :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource
Cheap and inaccurate range propagation for .&.
on unsigned numbers.
Code from Hacker's Delight
rangeXorUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource
Range propagation for xor
on unsigned numbers.
Code from Hacker's Delight
rangeProp1 :: (Ord a, Bounded a) => (a -> a -> Range a) -> Range a -> Range aSource
Auxiliary function for writing range propagation functions. Especially suitable for the code borrowed from Hacker's Delight.
rangeProp2 :: (Ord a, Bounded a) => (a -> a -> a -> a -> Range a) -> Range a -> Range a -> Range aSource
Auxiliary function for writing range propagation functions for two argument functions. Especially suitable for the code borrowed from Hacker's Delight.
rangePropagationSafetyPre :: (Random a, Ord a, Show a, Bounded a, Random b, Ord b, Show b, Bounded b, Ord c) => (a -> b -> c) -> (Range a -> Range b -> Range c) -> (a -> b -> Bool) -> Range a -> Range b -> PropertySource