In message <199811040828.RAA03341 / hanare00.math.sci.hokudai.ac.jp>
gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) writes:

> >もともと包含という意味はなかったと思っています.が,「同値」でもあ
> >りませんね.強いて言えば「caseに便利な『一致』判定」でしょうか.で,
> >この観点から Array#=== が include? なのはあまり便利でないように思い
> >ました.
  (略)
> case の when に来るのは何かの分割のひとつになっている
> ことが多いと思ってよい。そこで、互いに素な要素からなる
> 複数の配列を用いて場合わけするのは読み書きに便利と思う。

  実際,Array#=== が Array#include? 相当になっているのは多分昔に

    Parens = ["(", ")"]
    Whites = [" ", "\t", "\n"]
    Separators = Parens+Whites
      ...
    case line
    when ...
      ...
    when Whites
      ...
    else
      ...
    end

    なんて書いたらマッチしませんでした.当然ですけど.マッチするように
    なりませんか?

  # この部分だけで何を書いて遊んでいたかわかる人もいるはず (^^;

  なんてことを書いたのも影響しているわけですよね.これだけなら正規表現
  でもいいんですが,こういう書き方をしたくなるのは何も文字列操作ばかり
  ではなかろうと.

  # それ以来こんなのが必要になる程大きなスクリプトを書いていないのが何
  # ですが (^^;

  「メソッドの引数のように `*' で配列が展開できる」っていうのならまだ
  妥協できますが,そうでもないのに別の定義に変えてしまうのは,不便だと
  思います.

> また Array#=== が .include? 以外となるとふさわしい動作
> を思い付きません。 == で使う人がそれほどいるとは僕は思
> わないし。

  `==' を期待する人はいなくても,文字通り「包含関係」を期待する人はい
  るかもしれない.

    [1, 2, 3] === [1, 2]
    true

  とか

  # 何に使うのかはともかく.

===========================================================================
  柳川和久 @ 東大阪市 . 大阪府
  kjana / os.xaxon.ne.jp                                   November 4, 1998
So many men, so many minds.