On Thu, Feb 01, 2007 at 10:58:52PM +0900, Austin Ziegler wrote:
> On 2/1/07, Ola Bini <ola.bini / ki.se> wrote:
> >And further, it's a question of flexibility. Why shouldn't you be able
> >to do it?
> 
> Classes represent objects that contain state. Classes have
> initialization; modules don't contain state (as such).

Well, actually, the difference between classes and modules is very
small, as they both are stored in RClass.

  struct RClass {
    struct RBasic basic;
    struct st_table *iv_tbl;
    struct st_table *m_tbl;
    VALUE super;
  };

And both even use `super`, as modules will "inherit" from a proxy
class for mixins.  When you `include`, a class gets used: an IClass.
See `include_class_new`, specifically the line:

  OBJSETUP(klass, rb_cClass, T_ICLASS);

_why