タイプクラスIntegralには2つの演算quot
とdiv
がありますが、Haskell 2010言語レポートでは、それらの演算が指定されていません。 div
が整数除算であると仮定すると、quot
はどういう意味がありますか、またはquot
の目的は何ですか?あなたはいつ使うのですか?整数演算子quot vs div
46
A
答えて
88
26
負の数を扱うときは、2つの動作が異なります。考えてみましょう:
Hugs> (-20) `divMod` 3
(-7,1)
Hugs> (-20) `quotRem` 3
(-6,-2)
ここ
、-7 * 3 + 1 = -20
と-6 * 3 + (-2) = -20
が、2つの方法があなたに別の答えを与えるが。
また、ここで参照:http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html
quot
の定義があるdiv
の定義があるのに対し、「整数の除算は負の無限大に向かって切り捨て」、「整数除算はゼロに向かって切り捨て」。
yがゼロでない場合quot
、rem
、div
、及びmod
クラスメソッドは、これらの法則を満たす:
(x `quot` y)*y + (x `rem` y) == x
(x `div` y)*y + (x `mod` y) == x
quot
は整数でHaskellのレポートからセクション6.4.2を引用する
+1
あなたは知っている、 divMod'と 'quotRem' ... – fuz
関連する問題
- 1. C++演算子()括弧 - 演算子Type()vs型演算子()
- 2. メンバー関数vs演算子オーバーロード
- 3. - vs - = numpyの演算子
- 4. MATLAB論理演算子:&& vs&
- 5. C#ビットワイズ演算子vs JavaScriptビットワイズ演算子
- 6. 整数型の演算子^のオーバーロード
- 7. Java |整数を持つ演算子。
- 8. エラー:演算子が存在しません:整数==整数
- 9. Sybase:BETWEEN vs "<=" and "> ="演算子
- 10. - a vs a - 、演算子の優先度
- 11. 演算子( - - )()演算子C#
- 12. 演算子if演算子
- 13. gcc:__sync_lock_test_and_set VS。 =揮発性変数を持つ演算子
- 14. 演算子のオーバーロード演算
- 15. C++演算子+演算子+ =オーバーロード
- 16. XOR演算子とstd :: ostream演算子
- 17. Xval演算子と比較演算子?
- 18. 共有ポインタ[]演算子と++演算子
- 19. Pythonのビット演算子 '&' 演算子
- 20. は、Invoke演算子&演算子はKotlin
- 21. C++:演算子オーバーロード、演算子+
- 22. Java演算子 - > how ==演算子
- 23. C++の代入演算子または増分演算子
- 24. 論理演算子!整数値の場合
- 25. 整数の単一のアンパサンド演算子(&)の動作の理解
- 26. 整数型とlong型のJavaのビット演算子ですか?
- 27. PostgreSQLエラー:演算子が存在しません:名前=整数
- 28. Postgres SQL演算子が存在しません。文字=整数;
- 29. 整数を追加するPython三項演算子
- 30. エラー:演算子が存在しません:テキスト=整数
これは有望なリンクのようです:http://cdsmith.wordpress.com/2007/06/02/learning-number-theory-and-haskell-the-division-algorithm/ –