"Abstraction of integral numeric types. That is, types
with no fractional part, including `Integer`. The
division operation for integral numeric types results
in a remainder. Therefore, integral numeric types have
an operation to determine the remainder of any division
operation."
see (`class Integer`)
by ("Gavin")
shared interface Integral<Other> of Other
satisfies Numeric<Other> & Enumerable<Other>
given Other satisfies Integral<Other> {
"The remainder, after dividing this number by the
given number."
see (`function Numeric.divided`)
shared formal Other remainder(Other other);
"Determine if the number is zero."
shared formal Boolean zero;
"Determine if the number is one."
shared formal Boolean unit;
"Determine if this number is a factor of the given
number."
shared Boolean divides(Other other) =>
(other%(this of Other)).zero;
}