Integral -package:aeson-optics -package:optics-core -package:lens-aeson -package:data-memocombinators package:Cabal-syntax
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.
In addition,
toInteger should be total, and
fromInteger
should be a left inverse for it, i.e.
fromInteger (toInteger i) =
i.
Accepts negative (starting with -) and positive (without
sign) integral numbers.
General coercion from
Integral types.
WARNING: This function performs silent truncation if the result type
is not at least as big as the argument's type.