[#39464] Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

25 messages 2004/04/01
[#39608] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

遅い反応&File.fnmatchは使った事ない&ruby-devの方では

[#39609] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

File.fnmatch(と Dir.glob)をちょっと使ってみたのですが、

[#39610] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/05/02

山本です。

[#39611] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39613] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39616] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39620] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39621] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/03

まつもと ゆきひろです

[#39622] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[ruby-list:39528] Re: int/int in Ruby2?

From: "T Akutsu" <locrian@...>
Date: 2004-04-09 13:09:13 UTC
List: ruby-list #39528
あくつです。なんかわくわくしてきだぞ。(^^;)

天体望遠鏡で地上を見る。上下さかさまに見えます。
「なぜ、わざわざ上下さかさまなの?」
と聞いてくるのが普通の感覚です。
でも、その方( 倒立像 )が望遠鏡として効率が良い。

実際、倒立像の望遠鏡で、天体を導入するのは、素人には難しいです。
高級地上望遠鏡を天体に向けて使うのが楽です。
でなければ、正立プリズムを使います。
# 接眼レンズ付近が巨大になる、天頂ミラーなどと組合わせると、
# 素人でなくても、ややこしいことになる。
実を言うと、人間の目も上下さかさまで像を結んでいる。
これは脳が修正している。

「 1/10 は、0.1 ですよね。Ruby では 1/10 が 0 になるのはどうしてですか?」
って聞いてくるのが普通の感覚です。
C言語では、それで良かった。
でも、Ruby でそれが良いとは思えない。
1.to_f / 10 を使う人は、C言語脳の修正です。
array[num / 10] は、暗黙の C言語脳の修正です。

>● 数学には従わず、ハードの実装に従っている、という説明で十分では。
>

という説明に納得できない人々は Ruby を使いません。

>理由:低コストで使え、理解もできて、
>  数学から少しズレていても「困らない」。

困る人々は Ruby を使いません。(^^;)
「困る」は、
「可付番号集合のメモリに、濃度アレフの実数を配置できないズレに困る」
ではありません。#素人の自分がこんなコトバ使うと恥ずかしい。

3.5 分
1.25 ドル
0.05 消費税率
0.421 打率

これらは、実数ではありません、有理数です。
ところが、Ruby では、実数もどきの Float 型になってしまいます。
「有理数が、Float 型に配置されてしまうズレに困る」
のです。

ruby-list:36690 付近で、たけ(tk)さんが提示している
Float_fixed_cmp.rb を思い出しました。
これは、Float の比較演算の再定義。

手元にメール自体は残っていないんですけど、
原先生の元発言が残っていました。
以下は、有理数が Float 型に配置されて困ってしまう場合です。

>私の本の読者から、成績処理のプログラム中に 1.1 < 61.1 - 60.0 が
>真になってしまって困っている、と報告を受けたんですが、どうアド
>バイスしたらいいでしょう?
>
>一応「BigFloat を使うか、あきらめましょう」と答えたのですが、例
>えば Excel ではそうならないですね。

念のため。
Double 型では真になります。Currency 型で偽になります。
# 1.1 < 61.1 - 60.0 の比較が Float の比較に見えたら Ruby 病です。(^^;)
# これは、有理数の比較ですよ。

Public Sub compare_num()
    If 1.1 < (61.1 - 60#) Then
        MsgBox "true 1"
    Else
        MsgBox "false 1"
    End If

    If 1.1@ < (61.1@ - 60@) Then
        MsgBox "true 2"
    Else
        MsgBox "false 2"
    End If

End Sub

2番目の 1.1@ < (61.1@ - 60@) は偽になります。

Excel ユーザーは、Ruby で
if 1.1 < (61.1 - 60.0)
    puts "true"
else
    puts "false"
end
が "true" を印字するのを見て、ビックリします。
1.1@ か何かを探します。
Ruby が言語レベルで通貨型をサポートしていると状況は変わります。
そうすれば、Excel ユーザーに「納得」してもらえます。
でなければ、成績処理プログラムでは Excel を使いなさいです。

  irb(main):001:0> require 'rational'
  => true
  irb(main):002:0> 1.1 < (61.1-60.0)
  => true
  irb(main):003:0> Rational(11,10) < (Rational(611,10)-Rational(600,10))
  => false
  irb(main):004:0>


In This Thread