Ruby имеет различия между Procs, созданными с помощью Proc.new и lambda (или оператора ->() в 1.9). Похоже, что non-lambda Procs будет отображать массив, переданный через аргументы блока; Procs, созданные через лямбда, не делают.
p = Proc.new { |a,b| a + b}
p[[1,2]] # => 3
l = lambda { |a,b| a + b }
l[[1,2]] # => ArgumentError: wrong number of arguments (1 for 2)
Есть ли у кого-нибудь понимание мотивов этого поведения?