D'après le rapport de haskell:Quand la différence entre quotRem et divMod est-elle utile?
Le quot, rem, div, et la classe mod méthodes satisfont à ces lois si y est non nul:
(x `quot` y)*y + (x `rem` y) == x (x `div` y)*y + (x `mod` y) == x
quot
est division entière tronquée vers zéro, tandis que le résultat dediv
est tronqué vers l'infini négatif.
Par exemple:
Prelude> (-12) `quot` 5
-2
Prelude> (-12) `div` 5
-3
Quels sont quelques exemples où la différence entre la façon dont le résultat est tronqué questions?
"pour que le reste soit toujours non négatif" Techniquement, le signe de "mod" suit le signe du second opérande. – newacct
Euh, vous avez raison. Je ne comprends pas cette décision de conception ... – ShreevatsaR
c'est de maintenir la propriété que '(q, r) = divMod x y' si et seulement si' x = q * y + r'. Exécutez un exemple, c'est intelligent comment cela fonctionne. – luqui