可変変数の場合においては、procよりlambdaの方が変数チェックが厳密です
procの場合
hoge = proc {|x, *w| (x||0) + w.inject(0,&:+)} hoge.curry(0)[1,2,3] => 6
lambdaの場合
hoge = lambda {|x, *w| (x||0) + w.inject(0,&:+)} hoge.curry(0)[1,2,3] ##ArgumentError: wrong number of arguments (0 for 1+)