Michael Lucas-Smith wrote:
> 
> Hi,
>         I'm a Smalltalk programmer and I have to say, of what I've seen of Ruby
> I'm impressed. I like it. Except for one inconsistency which really
> drives me up the wall. Two objects that nearly do the same thing, Proc
> and Block? { someCode } - one you send yield to, the other you send call.
> 
> Why?! That means you have to know what kind of object you have before
> you can send the message to it.

Actually, I don't think that blocks are objects at all, until you use
#proc or Proc.new to make a Proc instance using the block. (You can also
use the & argument prefix to do this.)

I've always assumed that blocks denote a piece of code plus an argument
list plus a binding, but without wrapping these things up into an
object. Maybe it's more efficient to do it this way?