[#8468] require で SEGV — ruby <g96p0935@...>
西本です。
[#8469] [PATCH] -s command line option — nobu.nakada@...
なかだです。
[#8507] mode_t in file.c — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>
これつぐです。
まつもと ゆきひろです
これつぐです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ごとけんです
これつぐです。
[#8565] interface declaretion — "Dai.K." <MAP2303@...>
[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
小松です。
まつもと ゆきひろです
小松です。
[#8622] Win32API (Re: Ruby 1.4.3 binaries for Cygwin and DJGPP) — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
有馬@FITECです。
よしだです
[#8623] [BUG?] core dump `ruby -r debug' — IWAMURO Motonori <iwa@...>
岩室@富士通です。
[#8635] slow gsub — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
なひです.
高橋征義です。
なひです.
まつもと ゆきひろです
なひです.
青山です。
なひです.
高橋征義です。
まつもと ゆきひろです
高橋征義です。
なひです.
西@九大です。
なかだです。
あおきです。
[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
永井@知能.九工大です.
新井です。
永井@知能.九工大です.
新井です。
新井です。
[#8665] [mswin32] STDERR does not work during `_function. — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
金子です。
金子です。
[#8667] make symlinks around libruby.so in instruby.rb — akira yamada / やまだあきら <akira@...>
[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>
金子です。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
えぐち@エスアンドイー です。
なかだです。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
[#8705] [mswin32] 100% CPU usage when use sleep — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
小松です。
[#8722] [mswin32] Win32API — KANEKO Naoshi <wbs01621@...>
金子です。
小松です。
まつもと ゆきひろです
[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
西@九大です。
あおきです。議論も好き。
西@九大です。
あおきです。
まつもと ゆきひろです
有馬です。
knuです。
まつもと ゆきひろです
これつぐです。
knuです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
In message "[ruby-dev:8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
まつもと ゆきひろです
ごとけんです
ごとけんです
なかだです。
ごとけんです
[ruby-dev:8643] Re: [REQ] {enumerable, integer, range}.rand
西@九大です。
#引用の順番は変更してます。
From: matz@netlab.co.jp (Yukihiro Matsumoto)
> | * Kernel#rand(min..max)/(min, max)? ⇒ よさそう
...
> 最初のはまだ私の中で結論出てません。
確かに。「rand(3C) を連想するから」という理由で納得しているので、もし
「それ以外の使い方(引数)」を認めるなら、何でも認めて欲しいところです。
多分、またギャーギャー言い出すでしょう。でも、最悪、それだけでも欲しい、
とか思ってたりもします。(今日のジレンマ)
> ではありません。関数的に見えた方が自然なものは関数的に見えた
> 方が良く、メソッド的に見えた方が自然なものはメソッド的に見え
> た方が良いというのが私の一貫したスタンス(のつもり)です。
これが見えていませんでした。こういうスタンスなら、まつもとさんが納得さ
れない理由もわかります。今迄の議論が軽く吹き飛ぶくらい、全てが一気に理
解(納得)できました。(説得できないであろう事も)。あまりにあっけなかった
ので、返事を忘れてました。。。(遅レスの精一杯の言い訳)
ていうか、それ(スタンス)自身には納得してませんが、それはスタイルや信念
みたいなものなので、人それぞれという事で問題ないです。はい。
> (概念としての)ある処理をまとめる方法は、オブジェクト指向言語
> にはダイナミックバインディングがあります。つまり、おなじメソッ
> ド名と引数パターンを持つメソッドは、それらが別々のクラスで定
要するに「single dispatch」ですね。はい。
> double dispatchは「メソッドはひとつのオブジェクト(レシーバ)
> によって選択されるが、ふたつの(かなり無理すれば複数)のオブジェ
はい。本質的ではないですが、「double」だけに2つかも。「multiple
dispatch」という言葉は一般的ですか?
> ですが、「統一的に受ける窓口」とはなんで、なんのためであろう
> かという疑問が残ります。
哲学的ですね。という事は、最後はまた「スタンス(ポリシー)」という話にな
りそうですが、自分の立場を明確にする為にお答えしましょう(土台固め)。て
いうか、今迄の議論における意見の相違はそこにあったので。
何の為か?「愛と平和の為」。何なのか?「その実現手段の1つ」です。(よく
わかってないらしい)。はい、ちょっと抽象的で難しいです。
「プログラミング」という領域で答えるならば、「従来のプログラミングにお
ける(本来は不要な)制限である、名前空間の汚染問題を解消する手段」ぐらい
でしょうか。
これになぞって今迄の話をまとめると、従来のプログラミングパラダイムには、
get_random_integer(integer)
get_random_value_from_range(range)
get_random_value_from_collection(collection)
という「名前空間の汚染」があり、それに起因する「ユーザへの負荷」(関数
名を多く覚える必要がある)もあるので、普通はやってられない。(OO な人の
言い分)。で、それを解決する手段として、
[1] single dispatch でいいじゃん。(まつもとさん)
(integer/range/collection)#get_random_value
[2] double dispatch でもいいじゃん。(情緒不安定な人)
Kernel#rand(integer/range/collection)
[3] どっちでもいいじゃん。(多くの ruby-dev な人)
がある訳ですね。確かに上の問題は [1]で解決されてます。で、[2]にする必
要はないのでは?果たして「統一的な窓口(rand)」は必要なのか?ていうか、
それって何?存在意義は?というのが先の質問ですね。そして、
> しかし、今回は別に乱数発生源とcollectionを組み合わせて選択す
> るというニーズが存在しないので、わざわざdouble dispatchを選
> 択する理由も、そのためのくくり(Kernel#rand)を導入する必然性
> もありません。
なんですね。はい、物凄く理解できます。でも、私は「double dispatch」と
は単にそういう「受け手の型が2つに増える(組み合わせられる)」だけでなく、
その「くくり」もメリットだと思うのです。これが選択する理由です。
#良い例が思いつかないので、間違ってるかも。。。(今日の弱気)
「導入する必然性」については、どこかの登山家ではないですが、「そこに
Kernel#rand があるから」です。「Kernel#get_random_value を新規作成して、
意地でも double dispatch」というのではないです。何かもったい気がするん
ですよね。せっかく「くくり(窓口)」はあるのに使っちゃダメ、みたいな。
便利なんだから、コンビニで住民票を取らせてよ、みたいな。
> さらに現在既にKernel#rand()は「1個の整数を引数にとる」という
> 仕様になっていますから(これを変えるつもりはない)、
がーん。そこまで言われたら、もうどーしよーもないです。でも、今迄の理由
から納得する事は十分にできますです。はい。
> * 関数のように思えないものを関数的にする
rand(integer) が関数的に自然であるならば、rand(collection) も自然に感
じられるのですが。まあ、「自然=(その人にとって)自然」の法則ですけど。
> 反対の理由です。しかも、反対することによってかずのりさんから
> 楽しいフォローがいただけると言うオマケつき。
な、なんとー!あ、遊びだったのね。。。
> 「外見」からです。外見は重要です。
はい。「外見で人を判断するな」と言いますし(あれ?)。全く関係ないですが、
これと「怪しい人を見たら警察へ」は矛盾してると昔からよく思う。うん、こ
れだけ矛盾した世の中なんだし、Kernel#rand が何を受けとってもいーじゃん。
(最後の無駄な抵抗)
という事で、今のとこ、
* Kernel#rand(xxx) ⇒ xxx は float も含む?min,max 指定はあり?
* Array#random_get ⇒ 名前次第。(Array 以外に Range もあり?)
でしょうか。
------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
西 和則 ( e-mail: kazunori@swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------