あおきです。

  In mail "[ruby-dev:8898] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
    matz / netlab.co.jp (Yukihiro Matsumoto) wrote:

> まつもと ゆきひろです

> |「メソッドはファンクションかプロシージャである」
> |「プロシージャはオブジェクトの状態を変化させる」
> |「ファンクションはオブジェクトの状態を変化させずに値を返す」

> ふうむ。実は私はMeyerのこの考え方には賛成してません。つーか、
> どっちかっていうと「強制されるのは迷惑」という感じでしょうか。
> 理由はあおきさん自身もおっしゃっているようにこのルールに対す
> る明確な反例が存在するからです。

そうおっしゃるんでないかという気はしてました  ^^;;

しかし今日になってさらに考えるとどうもよくないし、
ごとけんさんに指摘されたイテレータのこともあわせると
もはやどうにもならないので早くもこのルールは捨てます。


> |しかし、実際にこのような Ruby の仕様は使いやすく、自然と感じられます
> |(ですよね?)。この矛盾をどう埋めるのがよいかと考えたところ、
> |「名前がルール違反をすることを明確に示していればよい」のではないかと
> |いう結論にたどりつきました。
> 
> そうなのかなあ。readって名前で「ルール違反」をしているとはっ
> きり分かるのは普通じゃないですよ。でも、このルールにしたがっ

read がルール違反をするのは C の慣習から考えれば自明かなあと。


> きり分かるのは普通じゃないですよ。でも、このルールにしたがっ
> たEiffel的IOはめちゃめちゃ使いにくそうな仕様でした。

これにはまったく賛成。ぼくもあれは絶対使いたくないです。
なんで IO とバッファをいっしょにしちゃうんでしょうね。


> |ぼくは「そんなものは Ruby にはないんだ!」と信じることで
> |心の平静を保っています。 ^^;;
> |実際 $_ なんて使ったこともないし。
> 
> あれは one liner の挙動を説明するためにあるんです。
> 私も直接はあんまり使ったことないです。でも
> 
>   ruby -e 'print if /RE/'

なるほど。そういうときは確かに便利ですね。
-e はほとんど使わないので気付きませんでした。
-------------------------------------------------------------------
あおきみねろう
回線切りかえのためしばらく反応がなくなるかもしれません。