原です。

話があっちこっち飛んでますが、一応 goto でなく callcc している
つもりです。(でも抜けちゃうこともある。:-))

In message "[ruby-list:13856] Re: What is Object in Ruby? (Re: Ruby and LISP)"
    on 99/04/18, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
|
|ごとけんです
|
|# 僕は「破壊的」という言葉が定義できるかという点に興味を
|# もって参加しています。

私ももちろんその事にこだわっています。

|>(1)変数の束縛
|>
|>var = "obj" とするとき、変数はオブジェクト "obj" に「束縛
|>された」といいます。逆にいえば、オブジェクト "obj" は変数
|>var を束縛する。さらに foo = var とすると、foo も "obj" に
|>束縛されます。どちらの = も Ruby では「代入」呼ばれます。
|>(2つの = に区別があるかどうかの判断は保留。)
|
|「評価」という言葉を導入すれば区別なく使えると思います。

「評価」の事を意識して書きました。ただ評価した結果が参照なの
かオブジェクトなのかという問題はえーと、、、

|>後、式を評価した「値」という言葉をオブジェクトへの「参照」と
|>とるか、オブジェクトそのものととるかという大問題も残っていま
|>す。
|
|評価の結果は常にオブジェクトであるという表現には間違いは
|ないですよね。だとすれば参照という言葉をわざわざ使う必要
|もないかとも思います。

そこの所はやはりちょっと揉めるんじゃないですか?なにせ
戻ってきたのがオブジェクトだと言ってもどこまでが戻って
きたのか?オブジェクトの*先頭部分だけ*という考えは、
「参照が戻ってきた」というのとほとんど同じですよね。

最初、複合オブジェクトが*根こそぎ*戻ってきたという考
えていいじゃないかと思ったのだけど、*根こそぎ*の定義
がまだうまくいってないわけです。ごとけんさんはその定義
はできない、すべきでないという意見ですよね。

#とにかくオブジェクトが戻ってきた。もう何も聞かないで
#くれ、という態度もいいかもしれない。:-)


|また、変数のスコープにも触れた方がよいと思います。

変数と変数名を分けて解説しようかと思っていました。

(7)変数と変数名

  同じ変数名でも異なる変数を表現することがあります。一つの
  変数名が一つの変数を表現する範囲を「スコープ」といいます。

かなり不完全な(揉めそうな?)スコープの定義ですが。


|>(3)オブジェクトがオブジェクト参照すること
|>
|>オブジェクト obj1 のあるインスタンス変数 @var が他のオブジェ
|>クト obj2 を参照しているときは、「オブジェクト obj1 は obj2
|>を(@var を通して)参照している」と言って良いでしょう。
|>(他の場合にもオブジェクト同士の参照関係があるかについては議
|>論中。)
|
|インスタンス引数をもたない組み込みのクラスに関してはどう
|なのでしょうか??  組み込みクラスとユーザー定義クラスで区
|別を設けない方が望ましいと思います。

私もそう思っています。素朴に Hash, Array などに基本的な
参照関係を定義して、さらに「+ユーザー定義クラスのイン
スタンス変数による参照」で帰納的に定義を広げるだけでも
ある程度の成果はありそうです。


|>いまのところこのぐらいです。で、束縛はかなりテクニカルターム
|>であって定義の問題ですが、日常語に近い「参照」あるいは「参照
|>する」という言葉についてどう使うかについて議論がいろいろ出て
|>います。
|
|うーん、定義するかしないかで決着をつけるのではなく、用法
|を制限しようということですね。とすれば、自然さを追求した
|方がよいと思います。あくまで用語ではなく日本語として使う
|のであれば議論抜きで「参照している」というのを受け入れて
|もまぁよいのだけど、そういうお気楽さでよいですか??
|
|直観的な説明のための言葉でよいなら、「破壊的」や「参照」
|は受け入れられますが、それを越えてなんらかの無矛盾な用法
|を導入するのなら、ちゃんと定義された用語であることが望ま
|しいと思います。
|
|僕は定義の善し悪しを追求しようかと思っていました。参照を
|定義したくなるのは、「破壊的」を定義しようとしてたからで
|すよね、確か。だから、そっちを主眼に攻めた方が良いのでは
|ないでしょうか??  ただし破壊的か否かもクラスの実装の話で
|もあるので、言語レベルの用語としては定義できないという気
|もかなりしてます。組み込みや拡張モジュールのクラスなら、
|インスタンス変数では状態を指定できませんし。


この「言葉使い集」は前提的に今までの習慣を最小限にまとめ
たものです。ここから書き加えたり書き直したりして、ここへ
のズレとして議論ができるのではないかと思いました。本当は
きちんとした定義を書きたいのですが難しいので書けることだ
け書いているだけです。しかし、同じ言葉に複数の用法があれ
ば、意味の区別は明確にしたい。それから言葉を制限して混乱
を避けたい。

もちろん数学的にきちんとした定義(モデル)を与えたいとい
うのはその通りです。「破壊的」という言葉に関わっている意
味での「参照」をきちんと定義したい。でも難しそう。

私の目的はプラグマティカルには「人に文法を教える事」です。
例えば学生に「破壊的」という言葉の定義を簡単に教え、そこ
で、「じゃせんせーこの場合は破壊的?」とか突っ込んで来る、
突っ込んで来れる所に全部突っ込んで来るような性格の悪い学
生にすずしい顔をして答えたいわけです。(^^