From: HQss_YasuiS/hq_ss@... Date: 1999-02-05T19:18:16+09:00 Subject: [ruby-list:11955] Re: to_i,to_s の素朴な疑問 安井です。 話が別スレッドに脱線しててすみませんでした。m(__)m >問題を切り分けましょう. そうですね。それがいいですね。 > (1) +という演算子形式のメソッド > 確かにRubyにおいて演算子はメソッド呼び出しの特殊形式な > のですが,その意味については通常の数学的意味を連想させ > た方が望ましいと思ってます.結合法則とか交換法則とか. > そういう意味で > 1+"1" > "1"+1 > が違う動きをしてしまうのは,できるだけ避けたいと考えて > います.今はどちらもエラーになりますよね(メッセージは > 違うけど). 数学的法則といっても、Numeric と String では意味が異なりますよね。 # ところで、Stringの数学的法則ってなんだったかなあ? 結合法則、交換法則と言っても、数の世界では式の評価順序のことだけど Stringでは、文字列の連結方法のことだし、思想統一しにくいですよね。 # 両者では + は元々別の意味なんだからしょーがないというか、無理が # あり過ぎますね。やっぱり。 > (2) 引数による多態性 > これに反対してません.乱用は危険でしょうけど,場合によっ > ては良いことだと思います.乱用というのは引数の型の自動 > 変換に相当するような多態性は「型の認識」を阻害する心理 > 効果があることを念頭に置いてます.かならずしもいつもダ > メというわけではないですが,あまり大々的にやっちゃうと, > 言語の性質が変わっちゃいますね. 引数の多態性(?)は認めておられる、って言うか、現に一部のクラスでは 実装されている訳ですから認めないといけないですよね。 それと「乱用というのは引数の型の自動変換に相当するような多態性は 「型の認識」を阻害する」という個所は何を想定されているのでしょうか? たとえば、市川さんの指摘、 >String、Numericに関して言うなら、 >1 + "12" + 0 >1 + ("12" + 0) >の結果が違ってしまうのは気持ち悪いです。 を指すのでしょうか? でも、これはこれで仕様通りですから気を付けましょうねで済む話かも 知れませんね。(馬鹿なことを言うなって意見も聞こえてきそうですが) > (3) String#+が数値(あるいは他のオブジェクトも)受け付ける効果 > > これは上記の「型の認識を阻害する」タイプの多態性のよう > に感じられます. そのようですね。 >「多用に対して不安」とは上記の乱用を意味しています.もちろん, >Rubyをどのように使うかはユーザが決めることですが,ユーザにど >のような心理的影響を与えるかはある程度私の責任だと思っていま >す.Rubyはプログラミング時の心理的効果をある程度考えて設計さ >れてる言語なのです.大袈裟にいえば. あ、そうですね。 私も心理的効果とか、そうするのが合理的であるとかは大切だと思います。 今回の問題もそれにマッチしていると考えていますが、若干の修正は必要 とは思います。 で、折衷案になるかどうかわかりませんが、 1)Stringはそのまま変えない。 2)Numericには認める。 具体策はいろいろ意見を聞いてから、ということで如何? 異議ありですか? 余談ですが、私の中では、ファイルからデータの読み込みやCGIでの データ受け渡しに、必ずStringクラスを経由しなければならないと いうのが引っかかっていたのです。 これもCや他の言語に毒されていると批判されるかも知れませんがが、 scanf系のような関数が用意されており、ダイレクトで Numericで読 めていれば全く気にならなかったでしょうね。 では。よい週末を。 # 外は相当冷え込んでいます。皆さんお体大切に! - - - - - - 安井@日立造船 e-mail: yasuisu@omssv.hq.hitachizosen.co.jp