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 subrange of the natural numbers.
isNegative :: (Ord a, Num a) => Range a > BoolSource
Checks whether a range is a subrange 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