[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>

これつぐです。

21 messages 1999/12/05
[#8534] Re: Enumerable and rand — matz@... (Yukihiro Matsumoto) 1999/12/06

まつもと ゆきひろです

[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>

小松です。

19 messages 1999/12/07
[#8592] Re: [ruby-list:19228] Ruby 1.4.3 — matz@... (Yukihiro Matsumoto) 1999/12/07

まつもと ゆきひろです

[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

47 messages 1999/12/14
[#8646] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/14

なひです.

[#8653] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/14

まつもと ゆきひろです

[#8656] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/15

なひです.

[#8659] Re: urllib and httplib — Wakou Aoyama <wakou@...> 1999/12/15

青山です。

[#8685] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/21

なひです.

[#8687] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/21

高橋征義です。

[#8690] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/21

まつもと ゆきひろです

[#8717] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/24

高橋征義です。

[#8963] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/19

なひです.

[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>

新井です。

20 messages 1999/12/14
[#8651] Re: [PATCH] Ruby/Tk — Koji Arai <JCA02266@...> 1999/12/14

新井です。

[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>

金子です。

22 messages 1999/12/21
[#8695] Re: [win] dir name — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/12/22

小田@QNES です。

[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/12/27
[#8743] Re: [ruby-list:19945] Re: array + empty string — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>

西@九大です。

64 messages 1999/12/27
[#8744] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8748] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/28

西@九大です。

[#8751] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8767] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/29

西@九大です。

[#8777] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/30

まつもと ゆきひろです

[#8791] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Minero Aoki <aamine@...> 1999/12/31

あおきです。

[#8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/31

まつもと ゆきひろです

[#8793] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — ARIMA Yasuhiro <fit0298@...> 1999/12/31

有馬です。

[#8795] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 1999/12/31

 knuです。

[#8798] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 2000/01/01

まつもと ゆきひろです

[#8811] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 2000/01/03

 knuです。

[ruby-dev:8569] Re: [REQ] {enumerable, integer, range}.rand

From: Kazunori NISHI <kazunori@...>
Date: 1999-12-07 06:39:28 UTC
List: ruby-dev #8569
西@九大です。

今迄の話の流れと結論、そしてこのメールの位置付けです。

  * Kernel#rand(min..max)/(min, max)?   ⇒ よさそう
  * Array#random_get                    ⇒ よさそう(名前次第?)
  * Kernel#rand(obj)                    ⇒ ダメ ⇒ 何でさっ!

まず、「名前問題」は無視しています。あと、立場的には、RandomGenerator 
が複数存在しなくても、「乱数源」というオブジェクトに対するメッセージ、
という意味で(統一的な窓口の)存在価値はある、です。で、思想的な話です。

From: matz@netlab.co.jp (Yukihiro Matsumoto)
>    (3) メソッド型(obj.random_get)よりも関数型の
>        API(rand(obj))を選ぶ理由が無い

意見の食い違いはどうもここらへんの思想の違いにある予感。。。私は、

  * obj.random_get を持つ複数のクラスがあるなら、それを統一的に受ける
    窓口があってもよい。(double dispatch なので、obj.random_get が前提。
    それを捨てて rand(obj) だけ、という意味ではない)
  
と考えています。その為の double dispatch であると。で、何でこれが反対
されるのだろう?と思っていたのですが、まつもとさんの異論は直接これに向
けられているのでなく、

  * その窓口がなぜ関数(型)でなければならないのか?
    (RandomGenerator#rand/random(obj) とかなら許せる)

という事なのですか?

最初から気になってたんですが、なぜ「メソッド型」や「関数型」と区別する
んでしょうか?私は全く区別なく、ruby は全て「メソッド型」だと思ってい
ます。ruby スクリプト(のメイン部分?)は暗黙的に「include Kernel」され
た状態であると考えています。

ていうか、「ruby スクリプト」というものは、お手軽に書けるように、とい
う配慮から、

    class ARubyApplication
      include Kernel
      def initialize
        #   この部分
      end
    end

を書く事であり(クラス定義等はここでは無視)、ruby スクリプトの実行とは、
ARubyApplication.new を行う事なのです。(まつもとさんはまだ ruby をよく
御存知ないかもしれませんが)

すなわち、initialize 内にあるものは print でも rand でも、意味的には 
Kernel#print/rand です。ですから、syntax 上は完全とは言えないが、
semantics 上は「ruby は純粋な OO である」のです。

なので、「関数型のAPI(rand(obj))」呼ばわりで Kernel#rand(obj) が認めら
れないのには、イマイチ納得できません。rand(obj) を関数型というのならば
(syntax が大事と言うのならば)、ruby のメソッドは全て関数型です。同クラ
スのメソッド呼び出しでさえ self.method と書くような酔狂な人を除けば。

という事で、Kernel や RandomGenerator の違いも本質的でなく、「関数型」
「メソッド型」という違いもないので、Kernel#rand(obj) という統一的な窓
口がある事は不自然ではない、と思っています。


> |これでどうでしょう。これでダメならもう僕は鳥になる。。。(なれよ)
>
> 見てみたいものです。^^;;;

いや、ここだけの話。ruby の「b」は「bird」らしいですよ。(何か考えよう
としたが、もう一杯一杯らしい)

------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
      西 和則   ( e-mail: kazunori@swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------

In This Thread