Integral package:LambdaHack

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.
Re-exported fromIntegral, but please give it explicit type to make it obvious if wrapping, etc., may occur. Use toIntegralCrash instead, if possible, because it fails instead of wrapping, etc. In general, it may wrap or otherwise lose information.
Re-exported toIntegralSized, but please give it explicit type to make it obvious if wrapping, etc., may occur and to trigger optimization. In general, it may crash.