[#8168] {literal}#[]= — EGUCHI Osamu <eguchi@...>

えぐち@エスアンドイーです。

16 messages 1999/11/01
[#8172] Re: {literal}#[]= — matz@... (Yukihiro Matsumoto) 1999/11/01

まつもと ゆきひろです

[#8176] Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

35 messages 1999/11/01
[#8178] Re: Multiple self assignment — matz@... (Yukihiro Matsumoto) 1999/11/01

まつもと ゆきひろです

[#8212] Re: Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/02

もりきゅうです。

[#8213] Re: Multiple self assignment — matz@... (Yukihiro Matsumoto) 1999/11/03

まつもと ゆきひろです

[#8232] 例外を処理する 2 項演算子 — Kazunori NISHI <kazunori@...> 1999/11/05

西@九大です。

[#8233] Re: 例外を処理する 2 項演算子 — matz@... (Yukihiro Matsumoto) 1999/11/05

まつもと ゆきひろです

[#8236] Re: 例外を処理する 2 項演算子 — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/05

もりきゅうです。

[#8266] Re: 例外を処理する 2 項演算子 — EGUCHI Osamu <eguchi@...> 1999/11/07

えぐち@エスアンドイー です。

[#8269] Re: 例外を処理する 2 項演算子 — gotoken@... (GOTO Kentaro) 1999/11/07

In message "[ruby-dev:8266] Re: 例外を処理する 2 項演算子"

[#8271] Re: 例外を処理する 2 項演算子 — matz@... (Yukihiro Matsumoto) 1999/11/08

まつもと ゆきひろです

[#8274] Re: 例外を処理する 2 項演算子 — keiju@... (石塚圭樹) 1999/11/08

けいじゅ@日本ラショナルソフトウェアです.

[#8204] Re: [ruby-list:18281] Re: アクセス制御について — Shugo Maeda <shugo@...>

前田です。

12 messages 1999/11/02
[#8205] Re: [ruby-list:18281] Re: アクセス制御について — Shin-ichiro Hara <sinara@...> 1999/11/02

原です。

[#8315] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Kazunori NISHI <kazunori@...>

西@九大です。

37 messages 1999/11/15
[#8316] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — matz@... (Yukihiro Matsumoto) 1999/11/15

まつもと ゆきひろです

[#8369] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Koji Arai <JCA02266@...> 1999/11/18

新井です。

[#8374] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — matz@... (Yukihiro Matsumoto) 1999/11/18

まつもと ゆきひろです

[#8384] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Koji Arai <JCA02266@...> 1999/11/19

新井です。

[#8405] 1.4.3 (Re: Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{}) — matz@... (Yukihiro Matsumoto) 1999/11/24

[#8319] Re: Exception handling — Jun Adachi <adachi@...>

安達@沖データと申します。

21 messages 1999/11/16
[#8350] Re: Exception handling — Kazunori NISHI <kazunori@...> 1999/11/17

西@九大です。

[#8446] [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...>

西@九大です。

37 messages 1999/11/29
[#8449] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/11/30

まつもと ゆきひろです

[#8463] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/11/30

西@九大です。

[#8474] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/12/01

まつもと ゆきひろです

[#8476] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/12/01

西@九大です。

[#8487] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/12/02

まつもと ゆきひろです

[#8494] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/12/02

西@九大です。

[#8451] new Hash (Re: [ruby-list:19043]) — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/11/30

[ruby-dev:8315] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{}

From: Kazunori NISHI <kazunori@...>
Date: 1999-11-15 07:31:50 UTC
List: ruby-dev #8315
西@九大です。
#ruby-list から持ってきました

From: matz@netlab.co.jp (Yukihiro Matsumoto)
> grepがブロック付きで呼ばれた場合のブロックの値はあくまでも真
> 偽値であり、それが真であった場合の値を集めると言う発想はあり
> ませんでした。

単に、その「あくまでも真偽値」だった従来の仕様を変更して、「最後に評価
した値 + compact」にして欲しい、という提案を意図しています。今、気付き
ましたが、grep(pat).collect{} というより、collect{}.compact ですね。

> も賛同しますが、真偽値の真にそれ以上の意味を与えても良いのか

「真偽値における真の解釈」という概念的な話になると難しいので(ていうか、
私には高度過ぎるので)、そこらへんには触れずに、上述のような「仕様変更」
を提案しているだけのつもりですが、不十分でしょうか?

もし、この仕様変更には(例えば、Ruby の信念的にも)上記の「真偽値の解釈」
を避けては通れない、という事であれば、もう少し考えてみます。

> とか、意味のある値として偽を返したいときがあったりしないのか
> とかが気にならないでもないです。

えっと、それも大丈夫です。今、気付きましたが、collect{}.compact でなく
やはり grep(pat).collect{} でした。(コウモリ野郎)

ていうか、やっと、ここで自分の気持ちが整理できました。(遅いよ!)

「ブロックのある無しで、grep の返す配列の個数が違う」というのがとても
気持ち悪く、せめて「grep(pat){} が、grep(pat) と同じものを返す」のであ
れば、collect にも繋げ易い。(grep 内で完結できれば尚良し)。

というのが、どうやら、今回の提案の動機のようです。(今明かされる新事実)

要するに、現在、Array::method は、返り値の種類によって下記のように分類
できますが、
┌------------┬----------┬-----------┐
|配列数\種類|元の値    |加工した値 |
├------------+----------+-----------┤
|一定        |.select{} |.collect{} | # grep(){} は配列数的にはココ
├------------+----------+-----------┤
|可変        |.grep(pat)|    ---    |
└------------┴----------┴-----------┘

これを
┌------------┬----------┬------------┐
|配列数\種類|元の値    |加工した値  |
├------------+----------+------------┤
|一定        |.select{} |.collect{}  |
├------------+----------+------------┤
|可変        |.grep(pat)|.grep(pat){}|
└------------┴----------┴------------┘
とした方が、よく使われる(経験上&推測)右下のメソッドが補充できるばかり
か、grep の返り値における直観的イメージ(個数)にも合い、精神衛生上よい
と感じています。

返り値の個数は、grep(pat) の時点で決定しますので、「意味のある値として
の偽」を返す事も可能です。逆に言えば、このような仕様である方が、「意味
のある値としての偽」を返すのにも大変向いてると思います。

あー、すっきり!!どうでしょうか?

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

In This Thread

Prev Next