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