我试图把我的脑袋放在这个mod功能上.直到我尝试mod (-4) 3GHCi,一切似乎都很好.有人可以向我解释为什么mod (-4) 3等于2和不等于1?这真让我困扰!
chi*_*chi 13
integer x ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
mod x 3 ... 0 1 2 0 1 2 0 1 2 0 1 2 ...
Run Code Online (Sandbox Code Playgroud)
上面的序列满足mod (x+3) 3 = mod x 3任何方程式x.注意如何0 1 2不断重复.
请注意,在Haskell中我们都有
mod (-4) 3 == 2
rem (-4) 3 == -1
Run Code Online (Sandbox Code Playgroud)
哪里
integer x ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
rem x 3 ... 0 -2 -1 0 -2 -1 0 1 2 0 1 2 ...
Run Code Online (Sandbox Code Playgroud)
mod x y是div x y划分向下舍入(朝向 - 无穷大)的"余数" .相反rem x y是quot x y除法向零舍入的其余部分(因此"余数"可以是负数).