On Dec 15, 2005, at 5:41 PM, dblack / wobblini.net wrote: > Except... they're not quite identical, and actually as of RubyConf > 2003 (I think) Matz agreed that 'proc' would be deprecated in favor of > 'lambda', because having something called proc and something called > Proc.new that weren't the same was confusing. This is an area that has been a bit fuzzy for me. Is it fair to say that the only difference between Proc.new {#some code} and lambda {#some code} is the behavior when 'return' is explicitly called in the block? Are there any other differences? Am I correct in saying that when a formal argument list explicitly captures a block: def foo(&block);end that Ruby converts the actual block to a Proc instance via Proc.new as opposed to Kernel#lambda? And finally, is there a way to create a lambda-like object via a class method of Proc or is that behavior only available via Kernel#lambda? I seems unusual that Kernel#lambda returns an instance of Proc but that there is no way to get Proc itself to generate that type of an object.