See here: http://www.robertsosinski.com/2008/12/21/understanding-ruby-...
Proc objects created with lambda check arguments and have "diminutive return" so they behave as anonymous methods.
Also, Kernel#proc is an alias to Kernel#lambda, so the only way you get the bare Proc behavior is by calling Proc.new directly.