原(信)です。

今気がついたのですが、

  def foo
    bar
  end

  def bar
    yield(0, block_given?)
  end

  foo do |x|
    p x #=> [0, false]
  end

と、メソッドはメソッドにブロックを渡しますね(ruby 1.6.5)。
これって、昔は

  def foo(&b)
    bar(&b)
  end

としなければいけなかったと思うけど、いつからこうなっんで
したっけ?