Почему proc и лямбда возвращают разные значения для arity?
например.
proc { |x = 0| }.arity #=> 0
lambda { |a = 0| }.arity #=> -1
proc { |x=0, y| }.arity #=> 1
lambda { |x=0, y| }.arity #=> -2
Смотрите: http://www.ruby-doc.org/core-2.0/Proc.html#method-i-arity