Feature #5514

Numeric への quotient と quotrem の追加

Added by tadayoshi funaba over 2 years ago. Updated about 1 year ago.

[ruby-dev:44709]
Status:Open
Priority:Low
Assignee:Yukihiro Matsumoto
Category:core
Target version:Next Major

Description

Ruby では余りを求めるために modulo (%) と remainder が提供されています
が、modulo には対応する div があり、またその組み合わせである divmod も
存在しますが remainder にはありません。そこで対応する quotient と
quotrem を追加することを提案します。

History

#1 Updated by Yukihiro Matsumoto over 2 years ago

対称性とか一貫性とか以外にquotientとquoremがあると嬉しい局面っ
てのは具体的に例示できますか?

#2 Updated by tadayoshi funaba over 2 years ago

丸めの方向の問題なので、ruby の場合 floor、ceil、truncate、round がある
ことから、4つのパターンが有り得ると思います。ruby の div-mod は、floor
系と考えればいいと思います。実際、Common Lisp の floor は ruby の div
と divmod をも含んだ内容になっています。実際の利用のされかたからすると
すべてが等価値でないので、あとは truncate 系の quotient と quotrem をだ
けあったらいいと思います。

例として身近にある位取り法を見てみると、暦では外挿して1年の前を紀元前1
年 (零年) として表現したりしますが、その零には特別な意味がないわけです
から、紀元前でも後でも1月の前の月は12月のという事になります。この場合は、
floor 系をつかう事になります。一方で、時差を考える場合は、零に向って丸
めるわけですから truncate 系が必要になります。

他の言語だと、smalltalk では、quo と rem があって、haskell では quot、
rem、quotRem、CL では truncate をつかう事ができます。

#3 Updated by Koichi Sasada about 1 year ago

  • Category set to core
  • Assignee set to Yukihiro Matsumoto

宙ぶらりんになっているようなので、まつもとさんにアサインしておきます。
ご検討下さい。

Also available in: Atom PDF