Brian Candler wrote:
> I don't think so:
> 
> class Foo
>   define_method(:foo) { |a,(b,c)| p a,b,c }
> end
> 
> Foo.new.foo(1,2,3) rescue(puts "pants")      # => pants
> Foo.new.foo(1,[2]) rescue(puts "pants")      # => pants
> Foo.new.foo(1,[2,3,4]) rescue(puts "pants")  # => pants
> 
> You must pass exactly two arguments to #foo, which by my understanding of
> arity means the arity is 2. But the second argument must be an Array with
> exactly two elements.

I think arity is nearly meaningless when argument lists perform 
masgn-like array spreading.

I also think we may be overthinking the args thing a bit; the use case 
Yehuda illustrated would only include the straightforward args cases.

- Charlie