Sorry, missed this part :

On 15/12/05, ajmayo / my-deja.com <ajmayo / my-deja.com> wrote:
> It is also unclear, how, then, I pass down a block as an argument and
> then in turn pass it again to a child routine.

There are two ways to do this: the block variable way and the normal
parameter way.

If you want to pass it as a block (it has to be the last parameter) :

def method other_parameters, &the_block
  use_the_block_as_a_regular_parameter_for_this_method(the_block)
  use_the_block_as_a_block_for_this_method(&the_block)
end

method param { |vars| block }

If you want to pass it as a normal parameter (it doesn't have to be
the last parameter) :

def method other_parameters, the_parameter
  use_the_block_as_a_regular_parameter_for_this_method(the_parameter)
  use_the_block_as_a_block_for_this_method(&the_parameter)
end

my_proc = proc { |vars| block }
method param, my_proc

So, basically, & is the thing that makes a parameter the block (when
you're defining the method and when you're calling it).