On Dec 19, 2005, at 4:19 PM, Jacob Fugal wrote:
> [5] You can change a Proc object into a block with the & prefix. (In
> fact, you can turn any object into a block with & and a properly
> defined to_proc method. Whether doing so is good practice is
> debatable.)

This doesn't seem quite accurate to me.  The expression generated
by the use of '&' in a method call is an instance of Proc.  If the
expression prefixed by '&' is already an instance of Proc then
no conversion of any type occurs, the object is passed 'as is' to
the method.

If might be more accurate to say:

Instead of using a literal block in a method call, you can arrange
for any object to be passed as the 'block argument' to the method
with the '&' prefix operator:

	method(arg1, arg2, arg3, &block_arg)

If 'block_arg' is not an instance of Proc, then block_arg.to_proc
is called and the result, which must be an instance of Proc, is
passed to the method instead.