Proc and lambda

What is the difference between proc function and lambda function when
they both create new Proc object? Is there any guidelines for
preferring one over another?

Provided of course, I know the differences between Proc.new and lambda
~ both proc and lambda seems to behave the way, whereas, Proc.new
behaves slightly differently.

“S” == Sourav [email protected] writes:

S> Provided of course, I know the differences between Proc.new and
lambda
S> ~ both proc and lambda seems to behave the way, whereas, Proc.new
S> behaves slightly differently.

Well, if you think that proc and lambda behave the same, you’ll have a
surprise one day :slight_smile:

moulon% ./ruby -ve ‘proc { break }.call’
ruby 1.9.0 (2006-09-21) [i686-linux]
-e:1: break from proc-closure (LocalJumpError)
from -e:1:in `Proc#call’
from -e:1
moulon%

moulon% ./ruby -ve ‘lambda { break }.call’
ruby 1.9.0 (2006-09-21) [i686-linux]
moulon%

Guy Decoux

On 9/22/06, ts [email protected] wrote:

moulon% ./ruby -ve ‘proc { break }.call’
ruby 1.9.0 (2006-09-21) [i686-linux]
-e:1: break from proc-closure (LocalJumpError)
from -e:1:in `Proc#call’
from -e:1
moulon%

moulon% ./ruby -ve ‘lambda { break }.call’
ruby 1.9.0 (2006-09-21) [i686-linux]
moulon%

which means , if I remember correctly:
1.8 Proc.new != proc, proc == lambda
1.9 Proc.new == proc, proc!=lambda
right?

Robert

Guy Decoux


Deux choses sont infinies : l’univers et la bêtise humaine ; en ce qui
concerne l’univers, je n’en ai pas acquis la certitude absolue.

  • Albert Einstein

On 9/22/06, ts [email protected] wrote:

Thx Guy


Deux choses sont infinies : l’univers et la bêtise humaine ; en ce qui
concerne l’univers, je n’en ai pas acquis la certitude absolue.

  • Albert Einstein

“R” == Robert D. [email protected] writes:

R> 1.8 Proc.new != proc, proc == lambda
R> 1.9 Proc.new == proc, proc!=lambda

yes,

Guy Decoux