Forum: Ruby-dev [ruby-trunk - Feature #5521][Open] Numeric#rational?、Numeric#complex?、Numeric#float? の追加

Posted by tadayoshi funaba (Guest)
on 2011-10-31 12:50
(Received via mailing list)
Issue #5521 has been reported by tadayoshi funaba.

----------------------------------------
Feature #5521: Numeric#rational?、Numeric#complex?、Numeric#float? の追加
http://redmine.ruby-lang.org/issues/5521

Author: tadayoshi funaba
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: 2.0


今のところ Common Lisp の rationalp などに似た仕様を考えています。
rational? は Integer や Rational に対しても真になります。float? は組み
込みに関しては Float だけですが、それ以外の実装についてもあればそれも真
になります。complex? も同様です。

別の考えとして、Scheme のような述語に仕様変更する考えもあります。その場
合、クラスを見るのではなく、integer? は、1、1.0、Rational(1) のいずれに
対しても真を返す事になります。

いずれにしても特定のクラスと一対一対応するものは意図していません。

実際に、complex の実装でも必要になっています。今は仕方がないので胡麻化
しに近いもので、もうひとつ別の複素数があったり、別の浮動小数点数実装が
あった場合に対応できません。
Posted by Yukihiro Matsumoto (Guest)
on 2011-10-31 20:05
(Received via mailing list)
$B$^$D$b$H(B $B$f$-$R$m$G$9(B

In message "Re: [ruby-dev:44720] [ruby-trunk - Feature #5521][Open] 
Numeric#rational?$B!"(BNumeric#complex?$B!"(BNumeric#float? $B$NDI2C(B"
    on Mon, 31 Oct 2011 20:50:27 +0900, tadayoshi funaba 
<redmine@ruby-lang.org> writes:

|$B:#$N$H$3$m(B Common Lisp $B$N(B rationalp $B$J$I$K;w$?;EMM$r9M$($F$$$^$9!#(B
|rational? $B$O(B Integer $B$d(B Rational $B$KBP$7$F$b??$K$J$j$^$9!#(Bfloat? 
$B$OAH$_(B
|$B9~$_$K4X$7$F$O(B Float $B$@$1$G$9$,!"$=$l0J30$N<BAu$K$D$$$F$b$"$l$P$=$l$b??(B
|$B$K$J$j$^$9!#(Bcomplex? $B$bF1MM$G$9!#(B
|
|$BJL$N9M$($H$7$F!"(BScheme $B$N$h$&$J=R8l$K;EMMJQ99$9$k9M$($b$"$j$^$9!#$=$N>l(B
|$B9g!"%/%i%9$r8+$k$N$G$O$J$/!"(Binteger? $B$O!"(B1$B!"(B1.0$B!"(BRational(1) 
$B$N$$$:$l$K(B
|$BBP$7$F$b??$rJV$9;v$K$J$j$^$9!#(B
|
|$B$$$:$l$K$7$F$bFCDj$N%/%i%9$H0lBP0lBP1~$9$k$b$N$O0U?^$7$F$$$^$;$s!#(B

$BFCDj$N%/%i%9$H0lBP0lBP1~$9$k$N$G$J$$$N$G$"$l$P0UL#$,$"$k$h$&(B
$B$J5$$,$7$^$9!#$3$N>l9g(B 1.0 $B$KBP$7$F(B integer? $B$,??$rJV$9$N$G(B
$B$"$l$P!"(B1.0$B$K$+$J$j6a$$CM!"$?$H$($P(B 1.0 / 3.0 * 3.0 $B$O$I$&$J(B
$B$s$G$7$g$&$M!#(B

                                $B$^$D$b$H(B $B$f$-$R$m(B /:|)
Posted by Tomoaki NISHIYAMA (Guest)
on 2011-10-31 23:40
(Received via mailing list)
$B$U$J$P$5$s(B

> complex? $B$bF1MM$G$9!#(B


complex?$B$,56$K$J$k$N$O$I$&$$$&>l9g$G$9$+(B?

real?$B$r:n$i$:!"(Bcomplex?$B$r:n$kM}M3$O(B?
--
Tomoaki NISHIYAMA

Advanced Science Research Center,
Kanazawa University,
13-1 Takara-machi,
Kanazawa, 920-0934, Japan
Posted by Kenta Murata (Guest)
on 2011-11-01 01:45
(Received via mailing list)
$B$`$i$?$G$9!#(B

(2011.11.01 04:04 ), Yukihiro Matsumoto wrote:
> |$BJL$N9M$($H$7$F!"(BScheme $B$N$h$&$J=R8l$K;EMMJQ99$9$k9M$($b$"$j$^$9!#$=$N>l(B
> |$B9g!"%/%i%9$r8+$k$N$G$O$J$/!"(Binteger? $B$O!"(B1$B!"(B1.0$B!"(BRational(1) 
$B$N$$$:$l$K(B
> |$BBP$7$F$b??$rJV$9;v$K$J$j$^$9!#(B
> |
> |$B$$$:$l$K$7$F$bFCDj$N%/%i%9$H0lBP0lBP1~$9$k$b$N$O0U?^$7$F$$$^$;$s!#(B
>
> $BFCDj$N%/%i%9$H0lBP0lBP1~$9$k$N$G$J$$$N$G$"$l$P0UL#$,$"$k$h$&(B
> $B$J5$$,$7$^$9!#$3$N>l9g(B 1.0 $B$KBP$7$F(B integer? $B$,??$rJV$9$N$G(B
> $B$"$l$P!"(B1.0$B$K$+$J$j6a$$CM!"$?$H$($P(B 1.0 / 3.0 * 3.0 $B$O$I$&$J(B
> $B$s$G$7$g$&$M!#(B

$B$3$l$O;d$b5$$K$J$j$^$7$?!#(B1.0.float? $B$,??$K$J$k$J$i(B
1.0.integer? $B$O56$K$J$C$FM_$7$$$HD>46E*$K9M$($F$7$^$$$^$9!#(B
Float#rational? $B$O$I$&$J$j$^$9$+!)(B

$B$3$NJ}8~@-$GDj5A$5$l$k>l9g!"(BRational(1).integer? 
$B$,??$K$J$k;v$K$D$$$F!"(B
$B0[O@$O$"$j$^$;$s!#$=$N>l9g$O(B Complex(1, 0).ineger? 
$B$b??$K$J$k$b$N$@$H9M(B
$B$($F$$$^$9$,!"9g$C$F$^$9$+!)(B
Posted by Tadayoshi Funaba (Guest)
on 2011-11-01 13:14
(Received via mailing list)
> > $BFCDj$N%/%i%9$H0lBP0lBP1~$9$k$N$G$J$$$N$G$"$l$P0UL#$,$"$k$h$&(B
> > $B$J5$$,$7$^$9!#$3$N>l9g(B 1.0 $B$KBP$7$F(B integer? $B$,??$rJV$9$N$G(B
> > $B$"$l$P!"(B1.0$B$K$+$J$j6a$$CM!"$?$H$($P(B 1.0 / 3.0 * 3.0 $B$O$I$&$J(B
> > $B$s$G$7$g$&$M!#(B
>
> $B$3$l$O;d$b5$$K$J$j$^$7$?!#(B1.0.float? $B$,??$K$J$k$J$i(B
> 1.0.integer? $B$O56$K$J$C$FM_$7$$$HD>46E*$K9M$($F$7$^$$$^$9!#(B
> Float#rational? $B$O$I$&$J$j$^$9$+!)(B

$B@0?t$O(B x == x.round $B$H$$$&H=CG$G$7$g$&!#(BScheme $B<0$@$H(B float 
$B$b(B
rational $B$G$7$g$&!#(B

> $B$3$NJ}8~@-$GDj5A$5$l$k>l9g!"(BRational(1).integer? $B$,??$K$J$k;v$K$D$$$F!"(B
> $B0[O@$O$"$j$^$;$s!#$=$N>l9g$O(B Complex(1, 0).ineger? $B$b??$K$J$k$b$N$@$H9M(B
> $B$($F$$$^$9$,!"9g$C$F$^$9$+!)(B

$B$O$$!#(B
Posted by Tadayoshi Funaba (Guest)
on 2011-11-01 13:17
(Received via mailing list)
> > complex? $B$bF1MM$G$9!#(B
>
>
> complex?$B$,56$K$J$k$N$O$I$&$$$&>l9g$G$9$+(B?
>
> real?$B$r:n$i$:!"(Bcomplex?$B$r:n$kM}M3$O(B?

CL $B$N(B complexp $B$O!"<B?t$G$J$$J#AG?t$H$$$&0UL#$G!"(BScheme $B$N(B 
complex? $B$O(B
number? $B$HF1$8$H$$$&;v$G$7$g$&!#(Breal? $B$O(B 1.9 
$B$K4{$K$"$j$^$9!#(B
Posted by Kenta Murata (Guest)
on 2011-11-02 04:40
(Received via mailing list)
$B$`$i$?$G$9!#(B

(2011.11.01 21:13 ), Tadayoshi Funaba wrote:
>> $B$3$l$O;d$b5$$K$J$j$^$7$?!#(B1.0.float? $B$,??$K$J$k$J$i(B
>> 1.0.integer? $B$O56$K$J$C$FM_$7$$$HD>46E*$K9M$($F$7$^$$$^$9!#(B
>> Float#rational? $B$O$I$&$J$j$^$9$+!)(B
>
> $B@0?t$O(B x == x.round $B$H$$$&H=CG$G$7$g$&!#(BScheme $B<0$@$H(B float $B$b(B
> rational $B$G$7$g$&!#(B

$B!V(BFloat $B$O(B inexact $B$J(B 
rational$B!W$H$$$&0LCVIU$1$K$9$k$s$G$9$M!#(B
$B$=$l$J$iG<F@$G$9!#(B
Posted by ko1 (Koichi Sasada) (Guest)
on 2013-02-26 01:50
(Received via mailing list)
Issue #5521 has been updated by ko1 (Koichi Sasada).

Assignee set to matz (Yukihiro Matsumoto)

宙ぶらりんになっているようなので、まつもとさんにアサインしておきます。
ご検討下さい。
(ふなばさんか、mrkn のほうが良かった?)
----------------------------------------
Feature #5521: Numeric#rational?、Numeric#complex?、Numeric#float? の追加
https://bugs.ruby-lang.org/issues/5521#change-37020

Author: tadf (tadayoshi funaba)
Status: Open
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: Next Major


今のところ Common Lisp の rationalp などに似た仕様を考えています。
rational? は Integer や Rational に対しても真になります。float? は組み
込みに関しては Float だけですが、それ以外の実装についてもあればそれも真
になります。complex? も同様です。

別の考えとして、Scheme のような述語に仕様変更する考えもあります。その場
合、クラスを見るのではなく、integer? は、1、1.0、Rational(1) のいずれに
対しても真を返す事になります。

いずれにしても特定のクラスと一対一対応するものは意図していません。

実際に、complex の実装でも必要になっています。今は仕方がないので胡麻化
しに近いもので、もうひとつ別の複素数があったり、別の浮動小数点数実装が
あった場合に対応できません。
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
No account? Register here.