原です。

> まつもと ゆきひろです.

>   foo.extend do

> のように使ってください.

あ、なるほど。


> 疑問を感じる理由は以下の通りです.
> 
>   * 特異メソッド定義を並べるのといろんな意味でほとんど大差な
>     いのではないか.
> 
>   * そもそも特異メソッドにはメソッドを追加するという性質上,
>     衝突などがつきまとい,気軽に追加できない場合がある.より
>     静的な現在程度の方が無難では

その通りですね。要望しておいてこう言うのもなんですが。^^;
ま、便利なこともあるので、責任とって(?)しばらく使ってみ
ます。


> そういう意味です.論旨は分からないでもないですけど,やはりこ
> こは「fooという性質を追加するのだ」ということで「fooという性
> 質を表現する形容詞」を名前に持つModuleを定義して欲しいと思い
> ます.

水かけ論になる前に引っ込むつもりですが、、、

うーん、foo はあくまでも C の性質であって、わざわざ B を定義
するほどのこともないわけです。super が使えるようになるという
効能があるだけです。


> |#ここまで書いてさっき話題になったクラス Kernel の存在意義
> |#とかモジュール化の話と関連があることに気づきました。
> 
> 関連はあるでしょうね.ちなみにKernelは「本来Objectの性質なん
> だが,トップレベルでの再定義でsuperが使えるようにするための
> モジュール」です.

ユーザーが Kernel を include する事はないのに Kernel という名
前があるわけですよね。確かに複数のメソッドをまとめておいて名
前をつける事には意味があると思います。しかしこの無名モジュール
の include を使って、全て Object に込めてしまう手もあるかと。


一方、無名モジュールのデメリットを考えてみると、、、

ちょっと ruby プログラミングが変わってしまうかもしれないですね。
普段だったら A > B > C > D > E と継承クラスやモジュールを作る
ところを、えいっと圧縮して C と E 二つぐらいで済ませてしまうか
もしれない。一つのクラスなのに内部で他層になっている状態。

本来 C の本体であるべきメソッド群を、念ののためにとかいって
include begin (do ?)以下に延々と書かれて、辟易するかもしれ
ない。
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
                            Shin-ichro Hara(Nagaoka Univ.of Tech.)