In article <1105502014.768712.22346.nullmailer / x31.priv.netlab.jp>,
  Yukihiro Matsumoto <matz / ruby-lang.org> writes:

> 実際には「特異クラスが特異オブジェクトのクラスを継承しない」
> ようにしたのではなくて、「特異クラスがClassを継承していなかっ
> たのを継承する(しているように見せる)」ようにしたのではないか
> と思います。

そうですね。もともとの問題が

http://mput.dip.jp/mput/?date=20040615#p05
| ■[mput 的今日の] Ruby の闇 18:44
| 
| % ruby -e'
| module Foo
|   class << Foo
|     define_method(:allcate, self.method(:allocate))
|   end
| end
| '
| -e:4:in `define_method': bind argument must be a subclass of Class (TypeError)
|         from -e:4
| zsh: exit 1     ruby
| 
| なんで特異「クラス」なのに Class のサブクラスじゃないんじゃぁ!

というものなので、Class を継承する (しているように見せる) というのが目
的なのはわかります。

わからないのは、それを実現する手段がなぜああなのかというところでして...
(他の方法があると考えているわけではなく、単純によくわからない)

まぁ、その手段も

> でも、そもそもメタクラスのクラスを#<Class:Class>にしないで単
> 純にClassにしてしまう方が良いような気もしてきました。

というように変わるかもしれないと思えば、深く考えてはいけないのかも知れ
ませんが。
-- 
[田中 哲][たなか あきら][Tanaka Akira]