Csaba Henk wrote: ... > So what I can imply there are two kind of closures in ruby: proc objects and > lightweight closures used with yield. Now I wonder, what's the difference, > what is the addon that is provided with a proc object but is missing in case > of the "lightweight closures"? One reason to create a Proc instead of just yielding is that the Proc can be saved away somewhere and called later, after the scope of the block is gone: def defer(&bl) @later_stuff = bl end def handle_deferred @later_stuff.call end defer do puts "hello" end handle_deferred