Hi, Josh

>> In the example, we can see these Method objects don't represent the
>> method C#meth directly. Then, how do we obtain the object which
>> represents the method C#meth directly? No, we can't. There is no way.
>>
> cmeth1 = meth_obj1.unbind
> cmeth2 = meth_obj2.unbind
>
> cmeth1 == cmeth2 # => true
> cmeth1 == C.instance_method('meth') # => true
> cmeth2 == C.instance_method('meth') # => true
> C.instance_method('meth') == C.instance_method('meth') # => true

I see. An UnboundMethod object represents a specific method
directly... Having the just reason that it is the Ruby's concept, I
lost another reason why we should regard a method as an object.

>> Please see Ruby Draft Specification:
>>
>> http://www.ipa.go.jp/software/open/ossc/english/ruby/ruby_draft_specification.html
>> Although this document is still draft version, it is a good document
>> for us to learn the Ruby's fundamental concepts. In sec.6.3, they
>> write about a method. Quoting from it:
>>
>> "A method is a procedure which, when invoked on an object, performs a
>> set of computations on
>> 10 the object. A method itself is not an object."
>>
> I will concede that you have a spec which says that a method is not an
> object. However, I do so with reserve, because this same spec, in this same
> paragraph it says "A method has one or more (when aliased) names associated
> with it. An association between a name and a method is called a method
> binding . When a name N is bound to a method M, N is called the name of the
> binding, and M is called the value of the binding. A name bound to a method
> is called the method name . A method can be invoked on an object by
> specifying one of its names. The object on which the method is invoked is
> called the receiver of the method invocation."
>
> Yet, UnboundMethods still have names
>
> String.instance_method("upcase") # => #<UnboundMethod: String#upcase>
> String.instance_method("upcase").name # => :upcase

I do not understand what the problem is. Did you think it is the
matter that an UnboundMethod object is still BOUND to the method name
in spite of "Unbound", which is contained in the class name of the
UnboundMethod class? If you did, you need not be afraid of it.

The word "Unbound" in the class name means that an UnboundMethod
object is NOT BOUND to the RECEIVER.

-- 
NOBUOKA Yuya