# Proc and lambda

**URL:** <https://www.ruby-forum.com/t/proc-and-lambda/69626>\
**Category:** Ruby\
**Created:** [September 22, 2006, 2:11pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626 "2006-09-22T14:11:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![sourav](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a4c791/32.png) [@sourav](https://www.ruby-forum.com/u/sourav)\
**Post date:** [September 22, 2006, 2:11pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626/1 "2006-09-22T14:11:05Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![sourav](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a4c791/32.png) [@sourav](https://www.ruby-forum.com/u/sourav)\
**Post date:** [September 22, 2006, 2:21pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626/2 "2006-09-22T14:21:06Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![sourav](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a4c791/32.png) [@sourav](https://www.ruby-forum.com/u/sourav)\
**Post date:** [September 22, 2006, 2:27pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626/3 "2006-09-22T14:27:07Z")

</div>

> > > > > “S” == Sourav [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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 🙂

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

---

<div class="post-metadata">

**Author:** ![sourav](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a4c791/32.png) [@sourav](https://www.ruby-forum.com/u/sourav)\
**Post date:** [September 22, 2006, 3:21pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626/4 "2006-09-22T15:21:14Z")

</div>

On 9/22/06, ts [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![sourav](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a4c791/32.png) [@sourav](https://www.ruby-forum.com/u/sourav)\
**Post date:** [September 22, 2006, 4:13pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626/5 "2006-09-22T16:13:22Z")

</div>

On 9/22/06, ts [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![sourav](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a4c791/32.png) [@sourav](https://www.ruby-forum.com/u/sourav)\
**Post date:** [September 22, 2006, 3:33pm UTC](https://www.ruby-forum.com/t/proc-and-lambda/69626/6 "2006-09-22T15:33:16Z")

</div>

> > > > > “R” == Robert D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

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

yes,

Guy Decoux
