Trans wrote:
>>Another option is to make __id, __send, and __send! impervious to
>>metaprogramming.  Say, they are listed in #methods because that's useful
>>for irb-learning, but remove_method and the like are no-ops when called
>>on __id, __send, and __send!.
> 
> Again, there would be no point in having #object_id, #send and #send!
> in that case.
Agreed.

> If given a choice between a method that works and one
> that might work, which one would you choose?
The simple one. Here, __* are all unlikely to be overridden (and well, 
can't - Ruby should stop you from overriding them). __ is a flag that 
this is a special thing that can't be overridden. It's ridiculously 
ugly, as a sign that it should be used sparingly, both by the language 
designers and by users. Finally, the names are short, for when you *are* 
writing metacode.

My point was that we need not extract the cool methods into Pervasives 
in order to achieve metaprogramming simplicity.

(On a side note: How do you find the true class of a BlankSlate?)

Devin