daz wrote:
> Yukihiro Matsumoto wrote:
> 
>>David A. Black writes:
>>
>>|Here's another idea:
>>|
>>|Kernel#send
>>|Kernel#send!   # dangerous version, includes private methods
>>
>>It's bit different from my sense of dangerousness, but let me
>>consider.
>>
>>matz.
>>
> 
> 
> [replying to David]
> 
> It's easy to understand the meaning of #send! when reading
> this thread because it is within context but, as Matz implies,
> bang! methods usually provide the destructive counterpart
> of a non-bang method (i.e. an object is modified in place
> rather than being copied first).
>      -- Yes, I know you know that :-)
> 
> There's nothing inherently dangerous about bang methods;
> we use them quite safely.
> 
> Calling private methods could be dangerous but overloading
> the meaning of the "!" suffix needs careful consideration
> and I understand Matz' concern.
> 
> Having said that, my initial reaction to #send! was positive
> and, for insiders like yourself and for me too, it should be
> easy to remember -- for teaching and learning, though, it
> may create an obstacle.
> 
> With 5 votes in support, I felt there was room for some balance.
> Any of the +1 voters strong enough to change their mind ?
> 

Well, I'll start with another "I know you know this, but ..." 
observation: This is not a democracy.  It's more a case of "Make a 
convincing case to Matz."


My first reaction to 'fcall' was that it appears to be a counterpart to 
send, but has no obvious semantic connection.  I like 'send!' because it 
conveys the idea that you are about to do something that is similar to 
another action, but may have unexpected or risky side-effects, and it 
makes it easier to explain the two.

On the other hand, send!/fcall is not actually sending a message; it 
bypasses the receiver's encapsulation perimeter and digs straight into 
the object.  It  is a forcible invocation of a method, not a request to 
handle a message (which may or may not map to a method or a suitable 
processing path).

So perhaps 'send!' is misleading.  Maybe 'demand!' or 'invoke!' or 
'do_this_dammit!' is better.



James

-- 

http://www.ruby-doc.org - The Ruby Documentation Site
http://www.rubyxml.com  - News, Articles, and Listings for Ruby & XML
http://www.rubystuff.com - The Ruby Store for Ruby Stuff
http://www.jamesbritt.com  - Playing with Better Toys