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.