Arbitrary precision integers. In contrast with fixed-size integral
types such as
Int, the
Integer type represents the
entire infinite range of integers.
Integers are stored in a kind of sign-magnitude form, hence do not
expect two's complement form when using bit operations.
If the value is small (fit into an
Int),
IS constructor
is used. Otherwise
Integer and
IN constructors are used
to store a
BigNat representing respectively the positive or the
negative value magnitude.
Invariant:
Integer and
IN are used iff value doesn't fit
in
IS