Integral

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.
TextShow instances and monomorphic functions for integral types. Since: 2
Functions for parsing and producing Integral values from/to ByteStrings based on the "Char8" encoding. That is, we assume an ASCII-compatible encoding of alphanumeric characters. Since: 0.3.0
Integral numbers, supporting integer division.
Pattern synonym that can be used to construct or pattern match on an Integer as if it were of any Integral type.
Integral Literal support e.g. 123 :: Integer 123 :: Word8
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.
Print integral numbers in common positional numeral systems.
Parsers for integral numbers written in positional numeral systems.
An Integral is anything that satisfies the law:
\a b -> b == zero || b * (a `div` b) + (a `mod` b) == a
>>> 3 `divMod` 2
(1,1)
>>> (-3) `divMod` 2
(-2,1)
>>> (-3) `quotRem` 2
(-1,-1)
Integral classes
This Prism can be used to model the fact that every Integral type is a subset of Integer. Embedding through the Prism only succeeds if the Integer would pass through unmodified when re-extracted.
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
Integral symbol. Use integralFromTo if you want to specify the limits of the integral.
Constructor for a simple integral type.
helper function to create a FieldInteger
Memoize an integral type.
matches an Integral value Note that the combinator (rPair . integral . integral) is ill-defined because the parse canwell. not tell where it is supposed to split the sequence of digits to produced two ints.