Issue #5512 has been reported by tadayoshi funaba. ---------------------------------------- Feature #5512: Integer#/ の改訂 http://redmine.ruby-lang.org/issues/5512 Author: tadayoshi funaba Status: Open Priority: Normal Assignee: Category: Target version: 2.0 Integer#/ を Integer#quo の別名として定義しなおす事を提案します。 現在の Integer#/ はオペランドが整数である場合値が整数になります。整数を 与えた場合の結果だけを見て、あるいは整数ではない場合の結果だけを見て自 分の望み通りの結果を得たと思い込んでしまうかもしれません。 これついての対処として、Integer#div、または Integer#quo を利用するよう 啓蒙するなどいくつかの提案がありうるでしょうが、本質的な解決法は、やは り仕様を変更するしかないと思われます。 これはプログラミングにおける総称性の確保の邪魔になり、Numeric#/ を利用 はバグの温床になり得えます。
on 2011-10-30 09:20
on 2011-10-31 19:46
$B$^$D$b$H(B $B$f$-$R$m$G$9(B
In message "Re: [ruby-dev:44707] [ruby-trunk - Feature #5512][Open]
Integer#/ $B$N2~D{(B"
on Sun, 30 Oct 2011 17:19:45 +0900, tadayoshi funaba
<redmine@ruby-lang.org> writes:
|Integer#/ $B$r(B Integer#quo $B$NJLL>$H$7$FDj5A$7$J$*$9;v$rDs0F$7$^$9!#(B
$BD94|E*$K$O;?@.$7$^$9$,!"(B2.0$B$K$O$"$^$j2a5n$H$NHs8_49@-$rF~$l(B
$B$?$/$J$$$N$G!"$=$N<!(B(3.0?)$B$K$7$h$&$H;W$$$^$9!#(B
on 2011-11-01 01:52
(2011.11.01 03:45 ), Yukihiro Matsumoto wrote: > $B$^$D$b$H(B $B$f$-$R$m$G$9(B > > In message "Re: [ruby-dev:44707] [ruby-trunk - Feature #5512][Open] Integer#/ $B$N2~D{(B" > on Sun, 30 Oct 2011 17:19:45 +0900, tadayoshi funaba <redmine@ruby-lang.org> writes: > > |Integer#/ $B$r(B Integer#quo $B$NJLL>$H$7$FDj5A$7$J$*$9;v$rDs0F$7$^$9!#(B > > $BD94|E*$K$O;?@.$7$^$9$,!"(B2.0$B$K$O$"$^$j2a5n$H$NHs8_49@-$rF~$l(B > $B$?$/$J$$$N$G!"$=$N<!(B(3.0?)$B$K$7$h$&$H;W$$$^$9!#(B 2.0 $B$,%j%j!<%9$5$l$?$i(B trunk $B$G<BAu$G$-$k$H2r<a$7$FNI$$$G$9$+!)(B $B$=$l$H$b!"(B2.0 $B$N%j%j!<%98e$K$b$&0lEY9M$($^$9$+!)(B
on 2011-11-01 14:13
$B1sF#$G$9!#(B 2011$BG/(B11$B7n(B1$BF|(B3:45 Yukihiro Matsumoto <matz@ruby-lang.org>: > In message "Re: [ruby-dev:44707] [ruby-trunk - Feature #5512][Open] Integer#/ $B$N2~D{(B" > on Sun, 30 Oct 2011 17:19:45 +0900, tadayoshi funaba <redmine@ruby-lang.org> writes: > > |Integer#/ $B$r(B Integer#quo $B$NJLL>$H$7$FDj5A$7$J$*$9;v$rDs0F$7$^$9!#(B > > $BD94|E*$K$O;?@.$7$^$9$,!"(B2.0$B$K$O$"$^$j2a5n$H$NHs8_49@-$rF~$l(B > $B$?$/$J$$$N$G!"$=$N<!(B(3.0?)$B$K$7$h$&$H;W$$$^$9!#(B $BK\5$$GJQ$($kM=Dj$,$"$k$N$J$i!"FCBg$NHs8_49$K$J$j$^$9$N$G!":#$N$&$A$K(B $B@Z$j<N$F$?$$>l9g$N?d>)BeBX:v$r7h$a$F(B ( (x/y).round $B$G$9$+$M!)(B) $B!"(B 2.0 $B$+$i7<LX$7$F$*$$$?$[$&$,$$$$$H;W$$$^$9!#(B($B$D$^$j?d>)7A<0$K$J$C$F(B $B$$$J$$>l9g$K(B warning $B$r=P$9(B) $B8D?ME*$K$O!"(BInteger#// $B$H$+JL$N1i;;;R$rF3F~$7$F!"(BInteger#/ $B$OJQ$($J$$(B $BJ}$,4r$7$$$G$9!#@Z$j<N$F$r4|BT$7$?%3!<%I$r$9$4$/=q$$$F$-$?!#!#!#(B
on 2011-11-01 14:47
> $BK\5$$GJQ$($kM=Dj$,$"$k$N$J$i!"FCBg$NHs8_49$K$J$j$^$9$N$G!":#$N$&$A$K(B > $B@Z$j<N$F$?$$>l9g$N?d>)BeBX:v$r7h$a$F(B ( (x/y).round $B$G$9$+$M!)(B) $B!"(B > 2.0 $B$+$i7<LX$7$F$*$$$?$[$&$,$$$$$H;W$$$^$9!#(B($B$D$^$j?d>)7A<0$K$J$C$F(B > $B$$$J$$>l9g$K(B warning $B$r=P$9(B) $B$=$l$O;?@.$G$9!#$3$l$^$G$N;v$r9M$($k$H$"$^$j4|BT$G$-$J$$$G$9$,!#(B python2 $B$G$d$C$?$h$&$J;v$G$9$,!"(Bruby $B$@$H(B div $B$r$D$+$($C$F$/$i$$$G$7$g(B $B$&!#(B > $B8D?ME*$K$O!"(BInteger#// $B$H$+JL$N1i;;;R$rF3F~$7$F!"(BInteger#/ $B$OJQ$($J$$(B > $BJ}$,4r$7$$$G$9!#@Z$j<N$F$r4|BT$7$?%3!<%I$r$9$4$/=q$$$F$-$?!#!#!#(B smalltalk $B$G$O!"(B// $B$,@Z<N$F(B \\ $B$,$=$l$NBP$K$J$kM>$j$J$C$F$$$^$9$,!"(B ruby $B$G$O(B // $B$O@55,I=8=$KHo$k$N$G%@%a$@$H8@$o$l$^$7$?!#$I$C$A$K$7$F$b(B Integer#/ $B$rJQ$($k;v$K0UL#$,$"$k$N$G!"$=$l$@$C$?$i!"(Bdiv $B$H(B quo $B$r$D$+$$(B $B$^$7$g$&$G=*$j$G$9$M!#8e$O$D$+$$$d$9$$$h$&$K(B div $B%a%=%C%I$G$O$J$/!"(Bdiv $B1i;;;R$rMQ0U$9$k$/$i$$$+!#(B
on 2011-11-01 15:00
$B$^$D$b$H(B $B$f$-$R$m$G$9(B
In message "Re: [ruby-dev:44765] Re: [ruby-trunk - Feature #5512][Open]
Integer#/ $B$N2~D{(B"
on Tue, 1 Nov 2011 22:12:54 +0900, Yusuke Endoh <mame@tsg.ne.jp>
writes:
|$BK\5$$GJQ$($kM=Dj$,$"$k$N$J$i!"FCBg$NHs8_49$K$J$j$^$9$N$G!":#$N$&$A$K(B
|$B@Z$j<N$F$?$$>l9g$N?d>)BeBX:v$r7h$a$F(B ( (x/y).round $B$G$9$+$M!)(B) $B!"(B
|2.0 $B$+$i7<LX$7$F$*$$$?$[$&$,$$$$$H;W$$$^$9!#(B($B$D$^$j?d>)7A<0$K$J$C$F(B
|$B$$$J$$>l9g$K(B warning $B$r=P$9(B)
$BJ}?K$H$7$F$O;?@.$G$9$,!"!V?d>)7A<0$K$J$C$F$$$J$$!W$3$H$r$I$&(B
$B$d$C$F8!=P$7$^$9$+!)(B Integer#/ $B$,8F$P$l$kEY$K7Y9p$r=P$9!)(B
|$B8D?ME*$K$O!"(BInteger#// $B$H$+JL$N1i;;;R$rF3F~$7$F!"(BInteger#/ $B$OJQ$($J$$(B
|$BJ}$,4r$7$$$G$9!#@Z$j<N$F$r4|BT$7$?%3!<%I$r$9$4$/=q$$$F$-$?!#!#!#(B
$BJL$N1i;;;R$H$$$&0UL#$G$O(B quo $B$,$"$k$N$G!"!VJQ$($J$$!W$H$$$&(B
$B$N$O$3$NDs0F$N0UL#$,$J$/$J$k$N$G$O$J$$$G$7$g$&$+!#$^$?!"@0?t(B
$B$,MW5a$5$l$k$H$3$m$G$O$[$H$s$I$N>l9g@Z$j<N$F$,9T$o$l$F$$$k$O(B
$B$:$J$N$G!"<B:]$K$O$"$^$jLdBj$K$J$i$J$$$3$H$,B?$$$+$b$7$l$^$;(B
$B$s!#$D$^$j!"(B
p 1/2
$B$_$?$$$N$O1F6A$r<u$1$k$1$I(B
ary[1/2]
$B$_$?$$$N$O1F6A$r<u$1$J$$$C$F$3$H!#(B
$B$^$D$b$H(B $B$f$-$R$m(B /:|)
on 2011-11-01 15:40
$B$U$J$P$5$s!"$^$D$b$H$5$s!"(B $B$*JV;v$"$j$,$H$&$4$6$$$^$9!#(B 2011$BG/(B11$B7n(B1$BF|(B22:46 Tadayoshi Funaba <tadf@dotrb.org>: >> $BK\5$$GJQ$($kM=Dj$,$"$k$N$J$i!"FCBg$NHs8_49$K$J$j$^$9$N$G!":#$N$&$A$K(B >> $B@Z$j<N$F$?$$>l9g$N?d>)BeBX:v$r7h$a$F(B ( (x/y).round $B$G$9$+$M!)(B) $B!"(B >> 2.0 $B$+$i7<LX$7$F$*$$$?$[$&$,$$$$$H;W$$$^$9!#(B($B$D$^$j?d>)7A<0$K$J$C$F(B >> $B$$$J$$>l9g$K(B warning $B$r=P$9(B) > > $B$=$l$O;?@.$G$9!#$3$l$^$G$N;v$r9M$($k$H$"$^$j4|BT$G$-$J$$$G$9$,!#(B > python2 $B$G$d$C$?$h$&$J;v$G$9$,!"(Bruby $B$@$H(B div $B$r$D$+$($C$F$/$i$$$G$7$g(B > $B$&!#(B $B$J$k$[$I!#(B $B!VBe$o$j$K(B Integer#div $B;H$(!W$H$$$&$3$H$J$N$G!"(BInteger#/ $B$,(B $B8F$P$l$k$?$S!"$b$7$/$O=i$a$F8F$P$l$?;~$@$1$K7Y9p$9$k46$8$G$9$+$M!#(B >> $B8D?ME*$K$O!"(BInteger#// $B$H$+JL$N1i;;;R$rF3F~$7$F!"(BInteger#/ $B$OJQ$($J$$(B >> $BJ}$,4r$7$$$G$9!#@Z$j<N$F$r4|BT$7$?%3!<%I$r$9$4$/=q$$$F$-$?!#!#!#(B > > smalltalk $B$G$O!"(B// $B$,@Z<N$F(B \\ $B$,$=$l$NBP$K$J$kM>$j$J$C$F$$$^$9$,!"(B > ruby $B$G$O(B // $B$O@55,I=8=$KHo$k$N$G%@%a$@$H8@$o$l$^$7$?!#$I$C$A$K$7$F$b(B > Integer#/ $B$rJQ$($k;v$K0UL#$,$"$k$N$G!"$=$l$@$C$?$i!"(Bdiv $B$H(B quo $B$r$D$+$$(B > $B$^$7$g$&$G=*$j$G$9$M!#8e$O$D$+$$$d$9$$$h$&$K(B div $B%a%=%C%I$G$O$J$/!"(Bdiv > $B1i;;;R$rMQ0U$9$k$/$i$$$+!#(B $B8+$d$9$$CfCV1i;;;R$,$J$$$3$H$,ITK~$J$N$+$J$H;W$C$?$N$G$9$,!"(B $BJQ$($k$3$H<+BN$,L\E*$J$s$G$9$+$M!#(B 2011$BG/(B11$B7n(B1$BF|(B23:00 Yukihiro Matsumoto <matz@ruby-lang.org>: > $B$^$?!"@0?t(B > $B$,MW5a$5$l$k$H$3$m$G$O$[$H$s$I$N>l9g@Z$j<N$F$,9T$o$l$F$$$k$O(B > $B$:$J$N$G!"<B:]$K$O$"$^$jLdBj$K$J$i$J$$$3$H$,B?$$$+$b$7$l$^$;(B > $B$s!#(B x $B$r(B n $B$NG\?t$K%"%i%$%s$5$;$k$?$a$K(B x / n * n $B$H$$$&%$%G%#%*%`$r$+$J$j=q$$$F$-$F$k$s$G$9$h$M!#(B $B$3$N%$%G%#%*%`$,6qBNE*$K$I$&$$$&$H$-$KI,MW$+$H$$$&$H!"4JC1$K$O(B $B@bL@$7$K$/$$$s$G$9$,!"$($($H!"%?%$%k$rBP>NE*$KJB$Y$k$?$a8D?t$r(B $B6v?t$K8BDj$9$k(B (x / 2 * 2) $B$H$+!"(B10^14 .. 10^14 + 1000000 $B$N(B $BHO0O$NAG?t$rNs5s$9$k(B (2 $BCJ3,%(%i%H%9%F%M%9(B) $B$H$+!#(B $BL/$JNc$G$9$_$^$;$s!#(B $B$"$H!"8=>u$N(B quo $B$@$H!"(B4.quo(2) $B$,(B Rational $B$K$J$k$_$?$$$G$9$,!"(B $B@0?t$G:Q$`;~$O@0?t$K$J$k$h$&$K$7$^$;$s$+!)(B
on 2011-11-01 15:47
$B$^$D$b$H(B $B$f$-$R$m$G$9(B
In message "Re: [ruby-dev:44768] Re: [ruby-trunk - Feature #5512][Open]
Integer#/ $B$N2~D{(B"
on Tue, 1 Nov 2011 23:40:20 +0900, Yusuke Endoh <mame@tsg.ne.jp>
writes:
|x $B$r(B n $B$NG\?t$K%"%i%$%s$5$;$k$?$a$K(B
|
| x / n * n
|
|$B$H$$$&%$%G%#%*%`$r$+$J$j=q$$$F$-$F$k$s$G$9$h$M!#(B
$B$J$k$[$I!#8_49@-LdBj$N2r7h$K$O$J$j$^$;$s$,!"@0?t$r%"%i%$%s$5(B
$B$;$k%a%=%C%I$,M_$7$$$3$H$b$"$k$+$b$7$l$^$;$s$M!#(B
on 2011-11-02 01:29
$B$`$i$?$G$9!#(B (2011.11.01 23:40 ), Yusuke Endoh wrote: > $B$"$H!"8=>u$N(B quo $B$@$H!"(B4.quo(2) $B$,(B Rational $B$K$J$k$_$?$$$G$9$,!"(B > $B@0?t$G:Q$`;~$O@0?t$K$J$k$h$&$K$7$^$;$s$+!)(B > $B$I$&$;$J$i!"J,Jl$,(B 1 $B$N(B Rational $B$O$9$Y$F@0?t$K@5=`2=$5$;$k$h$&$K(B $BJQ99$7$^$;$s$+!)(B
on 2011-11-22 13:27
$B$?$k$$$G$9!#(B 2011$BG/(B11$B7n(B1$BF|(B22:12 Yusuke Endoh <mame@tsg.ne.jp>: > $BK\5$$GJQ$($kM=Dj$,$"$k$N$J$i!"FCBg$NHs8_49$K$J$j$^$9$N$G!":#$N$&$A$K(B > $B@Z$j<N$F$?$$>l9g$N?d>)BeBX:v$r7h$a$F(B ( (x/y).round $B$G$9$+$M!)(B) $B!"(B > 2.0 $B$+$i7<LX$7$F$*$$$?$[$&$,$$$$$H;W$$$^$9!#(B($B$D$^$j?d>)7A<0$K$J$C$F(B > $B$$$J$$>l9g$K(B warning $B$r=P$9(B) $B?d>)BeBX0F$C$F(Bx.div(y)$B$G$9$h$M!)(B > $B8D?ME*$K$O!"(BInteger#// $B$H$+JL$N1i;;;R$rF3F~$7$F!"(BInteger#/ $B$OJQ$($J$$(B > $BJ}$,4r$7$$$G$9!#@Z$j<N$F$r4|BT$7$?%3!<%I$r$9$4$/=q$$$F$-$?!#!#!#(B $B;d$b(B x / a * b $B$_$?$$$J%3!<%I$O$:$$$V$sBt;3=q$$$F$-$?$N$G!"(B $BHs8_49$O4r$7$/$J$$$G$9!#(B $BIaCJ$O1i;;;R$G@0?t$KJD$8$?1i;;$r$7$?$$$N$G$9$,!"(B Numeric$B$NAm>N@-$N3NJ]$H>e<j$/:.$<$?2r$O$J$$$G$7$g$&$+!)(B
on 2013-02-26 01:51
Issue #5512 has been updated by ko1 (Koichi Sasada). Category set to core Assignee set to matz (Yukihiro Matsumoto) 宙ぶらりんになっているようなので、まつもとさんにアサインしておきます。 ご検討下さい。 ---------------------------------------- Feature #5512: Integer#/ の改訂 https://bugs.ruby-lang.org/issues/5512#change-37021 Author: tadf (tadayoshi funaba) Status: Open Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: Next Major Integer#/ を Integer#quo の別名として定義しなおす事を提案します。 現在の Integer#/ はオペランドが整数である場合値が整数になります。整数を 与えた場合の結果だけを見て、あるいは整数ではない場合の結果だけを見て自 分の望み通りの結果を得たと思い込んでしまうかもしれません。 これついての対処として、Integer#div、または Integer#quo を利用するよう 啓蒙するなどいくつかの提案がありうるでしょうが、本質的な解決法は、やは り仕様を変更するしかないと思われます。 これはプログラミングにおける総称性の確保の邪魔になり、Numeric#/ を利用 はバグの温床になり得えます。
on 2013-02-26 03:27
Issue #5512 has been updated by shugo (Shugo Maeda). Status changed from Open to Assigned ko1 (Koichi Sasada) wrote: > 宙ぶらりんになっているようなので、まつもとさんにアサインしておきます。 > ご検討下さい。 そういえば、mrubyでは1 / 2が0.5 (Float)になる(ので規格に準拠していない)ようなのですが、 将来CRubyで仕様変更するための布石でしょうか。 後方互換性については、 using OldIntegerDivision としたらInteger#/が現在の挙動に戻るといった対応は考えられるかなと思いますが、その前に Refinementsを何とかしないといけないですね…。 ---------------------------------------- Feature #5512: Integer#/ の改訂 https://bugs.ruby-lang.org/issues/5512#change-37076 Author: tadf (tadayoshi funaba) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: Next Major Integer#/ を Integer#quo の別名として定義しなおす事を提案します。 現在の Integer#/ はオペランドが整数である場合値が整数になります。整数を 与えた場合の結果だけを見て、あるいは整数ではない場合の結果だけを見て自 分の望み通りの結果を得たと思い込んでしまうかもしれません。 これついての対処として、Integer#div、または Integer#quo を利用するよう 啓蒙するなどいくつかの提案がありうるでしょうが、本質的な解決法は、やは り仕様を変更するしかないと思われます。 これはプログラミングにおける総称性の確保の邪魔になり、Numeric#/ を利用 はバグの温床になり得えます。
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.