I was looking at the library reference, and I have to say I'm confused
about the behavior of Proc#arity. First, note that the reference
is now wrong. It says that Proc.new {|a|}.arity returns -2, when it
has been fixed (?) to return -1. So given that, why do all the following
argument specifiers:
||
|a|
|*a|
return -1, while there is nothing that returns 0 or 1? Following
the POLS, I would have expected:
Proc.new {||}.arity -> 0
Proc.new {|a|}.arity -> 1
Proc.new {|a, b|}.arity -> 2
Proc.new {|a, b, c|}.arity -> 3
Proc.new {|*a|}.arity -> -1
Proc.new {|a, *b|}.arity -> -2
Proc.new {|a, b, *c|}.arity -> -3
Doesn't this make more sense?
BTW, as far as I can tell, nothing currently uses "arity", so if this
were a reasonable change, there shouldn't be any real problems with
backwards-compatibility..
--
Steven
"Mind your manners, son! I've got a tall pointy hat!"