Integral -package:massiv package:hedgehog

Integral numbers, supporting integer division. The Haskell Report defines no laws for Integral. However, Integral instances are customarily expected to define a Euclidean domain and have the following properties for the div/mod and quot/rem pairs, given suitable Euclidean functions f and g:
  • x = y * quot x y + rem x y with rem x y = fromInteger 0 or g (rem x y) < g y
  • x = y * div x y + mod x y with mod x y = fromInteger 0 or f (mod x y) < f y
An example of a suitable Euclidean function, for Integer's instance, is abs.
Generates a random integral number in the given [inclusive,inclusive] range. When the generator tries to shrink, it will shrink towards the origin of the specified Range. For example, the following generator will produce a number between 1970 and 2100, but will shrink towards 2000:
integral (Range.constantFrom 2000 1970 2100) :: Gen Int
Some sample outputs from this generator might look like:
=== Outcome ===
1973
=== Shrinks ===
2000
1987
1980
1976
1974
=== Outcome ===
2061
=== Shrinks ===
2000
2031
2046
2054
2058
2060
Generates a random integral number in the [inclusive,inclusive] range. This generator does not shrink.
general coercion from integral types