Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>> lambda {} == proc {} => true

Can you shed some light on the difference? I always thought that lambda is simply a synonym for proc - has this changed in more recent versions?



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.


Ah, I didn't know that Proc.new != proc/lambda :)

They both return Proc objects though, so I wonder if it is possible to "convert" them.


One small note, as pointed out in http://innig.net/software/ruby/closures-in-ruby.rb posted by arohner above: although in 1.8 proc is an alias for lambda, in 1.9 it's now an alias for Proc.new.


The empty lambda or empty proc is a special object that always points to the same instance. Probably some kind of optimization.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: