Issue #9777 has been updated by George Koehler. Beware! The answer on Stack Overflow (http://stackoverflow.com/a/2946734) is wrong, because it does not preserve the value of `self` in the block. This is better, but still wrong: ~~~ def convert_to_lambda &block obj = block.binding.eval('self') Module.new do define_method(:_, &block) return instance_method(:_).bind(obj).to_proc end end ~~~ It preserves `self` in the block, but it fails when I pass the lambda to `#instance_exec` or `#module_exec`. I will try to post explanation to Stack Overflow. There is no way to convert proc to lambda, unless Ruby adds a new feature. I have no reason to support this new feature. I am not wanting libraries to convert my blocks to lambdas. I know how to use `next`. If someone converts my block to a lambda, then my block can no longer `return` from the enclosing method, or ignore extra arguments. If I want my block to be a lambda, I can write `&->`, as in ~~~ 3.times &->(_) { puts "It works!" } ~~~ ---------------------------------------- Feature #9777: Feature Proposal: Proc#to_lambda https://bugs.ruby-lang.org/issues/9777#change-46607 * Author: Richard Schneeman * Status: Feedback * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 ---------------------------------------- Currently different block objects such as a lambda can be converted into to a proc: http://www.ruby-doc.org/core-1.9.3/Proc.html#method-i-to_proc However you cannot turn a Proc instance into a lambda. Since a Proc and lambda behave differently sometimes you may want to convert between the two functionalities. One example is a `return` inside of the block. In a lambda the `return` keyword exits the closure, in a Proc the `return` keyword raises an exception. There is currently no implementation standard way to convert a Proc to a lambda. I made a gem that makes this easier: https://github.com/schneems/proc_to_lambda but it seems overkill. If MRI introduces a `to_lambda` method on Proc then we can standardize on an interface for this behavior. This question on stack overflow has been upvoted many times: http://stackoverflow.com/questions/2946603/ruby-convert-proc-to-lambda. I think other Ruby developers would like this behavior supported by Ruby core. -- https://bugs.ruby-lang.org/