Type类积分有两个操作quot和div,但在哈斯克尔2010语种报告它没有规定他们应该做的事情.假设这div是不可分割的,有什么quot不同,或者目的是quot什么?你什么时候使用一个,而另一个?
aug*_*tss 102
引用Haskell报告中的第6.4.2节:
在quot,rem,div,和mod类方法满足这些法规如果y为非零值:
(x `quot` y)*y + (x `rem` y) == x
(x `div` y)*y + (x `mod` y) == x
Run Code Online (Sandbox Code Playgroud)
quot是整数除法被截断为零,而结果div被截断为负无穷大.
该div功能通常是更自然的quot功能,而功能对应于现代机器上的机器指令,因此它更有效.
Stu*_*etz 31
处理负数时,两者表现不同.考虑:
Hugs> (-20) `divMod` 3
(-7,1)
Hugs> (-20) `quotRem` 3
(-6,-2)
Run Code Online (Sandbox Code Playgroud)
在这里,-7 * 3 + 1 = -20和-6 * 3 + (-2) = -20,但这两种方式给你不同的答案.
另请参阅此处:http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html
定义为quot"整数除法截断为零",而定义为div"整数除法截断为负无穷大".
| 归档时间: |
|
| 查看次数: |
13357 次 |
| 最近记录: |