e$B86$G$9!#e(B
nurat-0.0.3 e$B$r85$K;O$a$?$$$H;W$$$^$9!#e(B
e$B$$$/$D$+;EMM$K$D$$$F$40U8+$r;G$$$?$$$N$G$9$,!"$^$:e(B
Rational(1, 1).integer?
e$B$Oe(B true e$B$+e(B false e$B$+!)e(Bfalse e$B$@$H$9$k$H!“J,Jl$,e(B 1
e$B$G$”$k$H$-e(B true
e$B$K$J$k=R8l$,M_$7$$5$$,$9$k$N$G$9$,!"$=$N%a%=%C%IL>$O2?$,NI$$$+!)e(B
nurat-0.0.3 e$B$r85$K;O$a$?$$$H;W$$$^$9!#e(B
e$B$h$m$7$/$*4j$$$7$^$9!#e(B
Rational(1, 1).integer?
e$B$Oe(B true e$B$+e(B false e$B$+!)e(Bfalse e$B$@$H$9$k$H!“J,Jl$,e(B 1 e$B$G$”$k$H$-e(B true
e$B$K$J$k=R8l$,M_$7$$5$$,$9$k$N$G$9$,!"$=$N%a%=%C%IL>$O2?$,NI$$$+!)e(B
0.0.zero? #=> true
0.0.integer? #=> false
e$B$$$&$3$H$G!"%/%i%9E*$JLd$$$H;W$$$^$9$1$I!"?t3XE*$JA0Ds$rCV$$$Fe(B
rational? e$B$,e(B integer e$B$r4^$$H$7$F$be(B integer? e$B$,e(B rational e$B$r4^$
$N$O87e(B
e$B$7$/$J$$$G$9$+!#e(B
0.0.integer? e$B$,e(B true e$B$J$ie(B Ratinal(1,1).integer? e$B$be(B
true e$B$G$$$$$h$&$J5$e(B
e$B$,$7$^$9!#e(B
e$B8D?ME*$K$Oe(B denominator == 1 e$B$GH=$k$7!"$H$/$Ke(B rational
e$B$KI,MW$H$$$&$o$1e(B
e$B$G$b$J$$$H;W$&$N$G!“e(Binteger?
e$B$H:.F1$7$J$$$h$&$J!”$$$$L>A0$,$"$l$Pe(B
Numeric e$B$H$7$F2?$+JL$KMQ0U$5$l$F$$$F$b$$$$$h$&$J5$$,$7$^$9!#e(B
e$B86$G$9!#e(B
Tadayoshi F. e$B$5$s$O=q$-$^$7$?e(B:
nurat-0.0.3 e$B$r85$K;O$a$?$$$H;W$$$^$9!#e(B
e$B$h$m$7$/$*4j$$$7$^$9!#e(B
nurat-0.0.4 e$B$r85$K$9$k$3$H$K$7$^$7$?!#e(B
e$B$7$/$J$$$G$9$+!#e(B
e$B$=$&$G$9$M!#e(Bfloat? e$B$H$+L5$$$3$H$r9M$($k$H!"e(Binteger?
e$B$O!“e(BFixnum e$B$He(B
Bignum e$B$r$^$H$a$k$3$H$K0U5A$,$”$k$_$?$$$G$9$M!#e(B
e$B8D?ME*$K$Oe(B denominator == 1 e$B$GH=$k$7!"$H$/$Ke(B rational e$B$KI,MW$H$$$&$o$1e(B
e$B$G$b$J$$$H;W$&$N$G!“e(Binteger? e$B$H:.F1$7$J$$$h$&$J!”$$$$L>A0$,$"$l$Pe(B
Numeric e$B$H$7$F2?$+JL$KMQ0U$5$l$F$$$F$b$$$$$h$&$J5$$,$7$^$9!#e(B
integral? e$B$G!"$I$&$G$7$g$&!#e(BNumeric e$B$KMQ0U$9$k$N$G$O$J$/$F!"e(B
Integer e$B$He(B Rational e$B$KMQ0U$9$l$P==J,$+$b!#e(B
e$B8D?ME*$K$Oe(B denominator == 1 e$B$GH=$k$7!"$H$/$Ke(B rational e$B$KI,MW$H$$$&$o$1e(B
e$B$G$b$J$$$H;W$&$N$G!"e(B
r.integral? ? r.to_i : r e$B$H$+=q$1$k$7!"JXMx$8$c$J$$$+$J!#e(B
e$B86$G$9!#e(B
inspect e$B$O$I$&$7$^$7$g$&!#e(B
[Rational(1,2).to_s, Rational(1,2).inspect] e$B$O!“A0$Oe(B
[“Rational(1, 2)”, “Rational(1, 2)”] e$B$G$7$?$,!”;d$,$*4j$$$7$Fe(B
[“1/2”, “Rational(1, 2)”] e$B$K$7$F$b$i$$$^$7$?!#K\Ev$O!“e(B
[“1/2”, “1/2”]
e$B$K$7$F$[$7$+$C$?$N$@$1$I!”@PDM$5$s$K$"$($J$/5Q2<$5$l$^$7e(B
e$B$?!#:#2s!"$U$J$P$5$s$Ne(B nurat e$B$G$O!"e(B[“1/2”, “(1/2)”]
e$B$H$J$C$F$$$^$9!#e(B
nurat e$B<0$O$?$V$s$^$?@PDM$5$s$,e(B NG e$B$r=P$9$H;W$$$^$9!#e(B
e$B$I$&$7$^$7$g$&!#e(B
"#<1/2>“e$B$H$$$&$N$b$”$k$i$7$$$1$I!#e(B
integral? e$B$G!"$I$&$G$7$g$&!#e(BNumeric e$B$KMQ0U$9$k$N$G$O$J$/$F!"e(B
Integer e$B$He(B Rational e$B$KMQ0U$9$l$P==J,$+$b!#e(B
e$B8D?ME*$K$Oe(B denominator == 1 e$B$GH=$k$7!"$H$/$Ke(B rational e$B$KI,MW$H$$$&$o$1e(B
e$B$G$b$J$$$H;W$&$N$G!"e(B
r.integral? ? r.to_i : r e$B$H$+=q$1$k$7!"JXMx$8$c$J$$$+$J!#e(B
e$B$=$NNc$+$i$9$k$H!“MxMQ<T$KK<AE*$G$J$$$H$3$m$G$N>.:Y9)$r4+$a$F$k$h$&$Je(B
e$B46$8$,$9$k$s$G$9$,!#$=$&$@$H$9$k$H!”$=$&$$$&0U?^$GF3F~$9$k$N$O$"$^$j$he(B
e$B$/$J$$$+$b$7$l$^$;$s!#e(B
e$B$h$jD>@\E*$Je(B unify
e$B$_$?$$$J%a%=%C%I$b9M$($i$l$k$1$I!"$3$l$b$$$^$R$H$D!#e(B
e$B86$G$9!#e(B
Tadayoshi F. e$B$5$s$O=q$-$^$7$?e(B:
integral? e$B$G!"$I$&$G$7$g$&!#e(BNumeric e$B$KMQ0U$9$k$N$G$O$J$/$F!"e(B
Integer e$B$He(B Rational e$B$KMQ0U$9$l$P==J,$+$b!#e(B
e$B8D?ME*$K$Oe(B denominator == 1 e$B$GH=$k$7!"$H$/$Ke(B rational e$B$KI,MW$H$$$&$o$1e(B
e$B$G$b$J$$$H;W$&$N$G!"e(B
r.integral? ? r.to_i : r e$B$H$+=q$1$k$7!"JXMx$8$c$J$$$+$J!#e(B
e$B$=$NNc$+$i$9$k$H!“MxMQ<T$KK<AE*$G$J$$$H$3$m$G$N>.:Y9)$r4+$a$F$k$h$&$Je(B
e$B46$8$,$9$k$s$G$9$,!#$=$&$@$H$9$k$H!”$=$&$$$&0U?^$GF3F~$9$k$N$O$"$^$j$he(B
e$B$/$J$$$+$b$7$l$^$;$s!#e(B
e$B$&!<$`!#e(Bmathne$BGI$N$U$J$P$5$s$K0-$$Nc$r=P$7$A$c$C$?$+$J$"!#;d$bMxMQ<T$K>.e(B
e$B:Y9)$r4+$a$k$N$ONI$/$J$$$H;W$&$1$I!"$$$m$$$m$J%i%$%V%i%j$N:n<T$bMxMQ<Te(B
e$B$N0lIt$J$N$G!"$$$$$s$8$c$J$$$+$J!#e(B
e$B$^$?!“7kO@$,!Ve(Bx
e$B$O@0?t$G$”$k!#!W$H$$$&%?%$%W$NDjM}$,?t3X$K$A$i$[$i$"$ke(B
e$B$0$i$$$G!"@0?t$+$I$&$+$H$$$&$N$O!"=EMW$J=R8l$@$H;W$$$^$9!#$=$7$F!“e(Bx
e$B$,e(B
e$B@0?t$G$”$k$+$I$&$+$rD4$Y$k$N$K!"e(B
x.denominator == 1
e$B$H=q$/$N$O$I$&$b;Q$,$h$/$J$$!#$b$7$+$9$k$H!"e(B
x.denominator == 1 || x.denominator == -1
e$B$H$9$Y$-$+$b$7$l$J$$$7!"$"$k$$$Oe(B
(x.numerator % x.denominator).zero?
e$B$H$9$Y$-$+$b$7$l$J$$!#$=$3$O<BAu$NET9g$K$+$+$o$k$N$G!"1#$7$?$$e(B
e$B$H$3$m$G$9!#$3$3$O$R$H$De(B
x.integral?
e$B$G$$$+$,!)$b$C$H$$$$L>A0$,$"$k$+$J!#e(B
e$B$h$jD>@\E*$Je(B unify e$B$_$?$$$J%a%=%C%I$b9M$($i$l$k$1$I!"$3$l$b$$$^$R$H$D!#e(B
unifye$B$H$$$&$N$O$I$&$$$&%a%=%C%I$G$9$+!)e(B
e$B$^$?!“7kO@$,!Ve(Bx e$B$O@0?t$G$”$k!#!W$H$$$&%?%$%W$NDjM}$,?t3X$K$A$i$[$i$"$ke(B
e$B$0$i$$$G!"@0?t$+$I$&$+$H$$$&$N$O!"=EMW$J=R8l$@$H;W$$$^$9!#$=$7$F!“e(Bx e$B$,e(B
e$B@0?t$G$”$k$+$I$&$+$rD4$Y$k$N$K!"e(B
e$B$=$3$OH]Dj$7$^$;$s!#<l99=EMW$H$b;W$$$^$;$s$,!"$$$$L>A0$,$"$l$P!"e(B
Numeric e$B0lBN$G9M$($l$P$$$$$H;W$$$^$9!#86$5$s$,M_$7$$$N$O!"e(Bscheme
e$B$Ne(B
integer?
e$B$K6a$$$H;W$&$s$G$9$,!“L>A0$,Ho$C$F$k$N$G!”$b$&;}$C$F$3$l$^$;e(B
e$B$s$7!#e(B
unifye$B$H$$$&$N$O$I$&$$$&%a%=%C%I$G$9$+!)e(B
e$BL>A0$OC1$K@PDM$5$s$Ne(B Unify
e$B$r;X$7$F$$$k$@$1$G!"$$$$2C8:$G$9$,!"$*$h$=e(B
e$B$3$s$J46$8$G$9$+$M!#JL$KI,MW$H$O;W$C$F$$$^$;$s!#e(B
class Numeric
def unify() self end
end
class Rational
def unify() if denominator == 1 then numerator else self end; end
end
class Complex
def unify() if image == 0 then real else self end; end
end