In article <1130222755.861386.32126.nullmailer / x31.priv.netlab.jp>,
  Yukihiro Matsumoto <matz / ruby-lang.org> writes:

> |def foo(*args, **keys, &block)
> |  bar(*args, **keys, &block)
> |end
> |
> |What's wrong with having to do that?
>
> It's longer than it is really needed.  I want to delegate everything
> I've passed, that's all.  I'd rather delegate blocks as well when I
> write bar(*args).

I think an array, *args, is a structure too poor to
represent the all arguments.

How about **keys contains positional arguments and block?
A hash is enough rich to represent positional argument and
block addition to keyword arguments.

def foo(**keys)
  p keys
  bar(**keys)
end

foo(1, 2, k:3) {}

=> {:k => 3, "positional" => [1, 2], "block" => lambda {}}

This means keys contains special pairs for positional
arguments and block.  In this example, "positional" and
"block" is used because strings are disjoint from symbols as
hash keys.
-- 
Tanaka Akira