From: Eugene Pimenov Date: 2009-03-03T13:11:36+09:00 Subject: [ruby-core:22634] Question: lambda and yield Proc#call and yield are different for a lambda. Is it intentional? Ruby code: def call_block(&l) l.call end def yield_block yield end def lambda_and_call l = lambda { return 1 } call_block(&l) + 1 end def lambda_and_yield l = lambda { return 1 } yield_block(&l) + 1 end [:lambda_and_call, :lambda_and_yield].each { |m| puts "#{m}: #{send(m)}" } Output: lambda_and_call: 2 lambda_and_yield: 1