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.