On Thu, Jun 19, 2008 at 3:23 PM, James Coglan <jcoglan / googlemail.com> wrote: > So anyway, this question has been really bugging me: in Ruby, how come > metaclasses are just that: classes? Given that you cannot instantiate them, > is there any reason why they need to be classes instead of just modules? I > want this release to be as close to Ruby as possible so if I've seriously > misunderstood something I'd rather be put right. Well, I don't think instantiability by itself is a requirement for a class. Binding is a class, but you can't instantiate it (yourself) either. Not quite the same, I know. The singleton pattern prohibits explicit instantiation. Again, slightly different maybe, although very much the same as in both cases there are somewhat artificial restrictions built in to enforce a concept. But do singleton modules make sense? Modules can be included in other classes, but it makes little sense to include a singleton module in another class because then it would no longer be a *singleton module*. So singleton modules would be unincludable modules. So what's better, uninstantiable classes are unincludable modules? Somewhat arbitrary choice, but as mentioned above, uninstantiable classes have precedent. My 2 cents... Peter