Desde el informe Haskell:¿Cuándo es útil la diferencia entre quotRem y divMod?
El quot, rem, div y clase mod métodos satisfacen estas leyes si y es distinto de cero:
(x `quot` y)*y + (x `rem` y) == x (x `div` y)*y + (x `mod` y) == x
quot
es la división entera trunca hacia cero, mientras que el resultado dediv
se trunca hacia el infinito negativo.
Por ejemplo:
Prelude> (-12) `quot` 5
-2
Prelude> (-12) `div` 5
-3
¿Cuáles son algunos ejemplos en los que la diferencia entre la forma en que el resultado es materia truncados?
"para que el resto siempre sea no negativo" Técnicamente, el signo de 'mod' sigue el signo del segundo operando. – newacct
Huh, tienes razón. No entiendo esta decisión de diseño ... – ShreevatsaR
es para mantener la propiedad que '(q, r) = divMod x y' si y solo si' x = q * y + r'. Ejecute un ejemplo, es inteligente cómo funciona. – luqui