[#17615] substitution at when-clause — Takaaki Tateishi <ttate@...>
立石です.
まつもと ゆきひろです
At Tue, 2 Jul 2002 02:54:01 +0900,
まつもと ゆきひろです
At Tue, 2 Jul 2002 13:30:17 +0900,
まつもと ゆきひろです
立石です.
まつもと ゆきひろです
青山です。
立石です.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
At Wed, 3 Jul 2002 17:48:58 +0900,
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#17625] Re: Getting CGI arguments as scalars — Wakou Aoyama <wakou@...>
青山です。
[#17662] update irb to cvs repository — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
In article <200207041003.TAA06746.keiju@ishitsuka.com>,
けいじゅ@日本ラショナルソフトウェアです.
[#17676] generation GC — Minero Aoki <aamine@...>
あおきです。
[#17706] self in block — masaki <GEC01122@...>
[#17714] Re: self in block — masaki <GEC01122@...>
[#17722] Re: self in block — masaki <GEC01122@...>
[#17725] Re: self in block — masaki <GEC01122@...>
まつもと ゆきひろです
In article <1027176584.577546.14709.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
At Sun, 21 Jul 2002 01:10:02 +0900,
まつもと ゆきひろです
[#17730] Re: self in block — masaki <GEC01122@...>
At Sat, 20 Jul 2002 21:27:58 +0900,
高橋征義です。
けいじゅ@日本ラショナルソフトウェアです.
[#17764] Re: self in block — masaki <GEC01122@...>
まつもと ゆきひろです
In article <1027383423.558649.31176.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027404202.545188.1283.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027406979.880878.1358.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027409151.187595.1406.nullmailer@picachu.netlab.jp>,
前田です。
In article <87bs8xkfqr.wl@studly.priv.netlab.jp>,
前田です。
[#17774] Re: self in block — masaki <GEC01122@...>
[#17832] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#17840] Re: new mathn [Re: Rational#to_int ← String#center] — keiju@... (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
[#17851] undef_method ? — Shin-ichiro HARA <sinara@...>
原です。
[#17855] non-blocking IO — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
[#17867] parenthesize argument(s) for future version — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
[ruby-dev:17752] Re: self in block
まつもと ゆきひろです
In message "[ruby-dev:17747] Re: self in block"
on 02/07/21, masaki <GEC01122@nifty.ne.jp> writes:
||すみません。私にとって「自然」というのは意味がないので、どう
||してそのselfが無名関数自身を指すべきなのか、それから正木さん
|
|何を自然と思うかという感覚は、非常に大事なことだと思っていますが、
それには同意しますが、「何を自然と思うかという感覚」は主観的
であることを考えると、あることをある人が自然であると感じるか
どうかは私にとってはほとんど意味がないです。
|ここで
|Fact=Function.new({0=>1}){"|n| n*self[n-1] "}
|と
|Fact=Function.new({0=>1}){"|n| n*Fact[n-1] "}
|を比べると、後者は、本来不必要な関数名、を使っている点で前者より
|劣ります。そのために
|関数名を換えたら block 内の関数名もそれにあわせて換えないといけない。
|小文字の関数名は使えない。
|といった欠陥が生じます。
|前者のような書き方ができるためには self が関数自身を指すことが必要です。
ここだけを考えると、一見selfが関数自身を指すことが良いように
感じられますが、最終的には
* それがどれだけ頻繁に起きるケースか
* それがどれだけ不都合か
* それを実現するために犠牲にする互換性はあるか
* それを実現することで全体のバランスはどうなるか
ということを勘案して決定する必要があると思います。
さて、無名関数を言語仕様に含む言語はたくさんありますが、無名
のまま再帰を実現する方法を言語仕様として提供しているものは少
数派です(JavaScriptはできたような気がします)。大御所Lispには
ありません。もちろん、Yコンビネータなどの方法がありますが、
実用的にはあまり広く使われているようには思えません。というこ
とは、このケースはほとんど使用されることのない珍しいケースで
はないかというのが私の印象です。ということで、得られるものが
少ないので、導入に対する動機が減るのですが、その一方で、仮に
これを実現するのにProcの意味を変更しては互換性において大問題
です。しかも、「原則的にブロック内部のselfは変わらない」とい
う原則がないがしろになるという効果は私には受け入れがたく感じ
ます。
私はかつてRuby/Tkでこの原則を曲げましたが、どっちかっていう
とそれからずっと後悔し続けています。些細なメリットのために同
じ後悔をしたいとは思っていません。
まつもと ゆきひろ /:|)