Forum: Ruby-core [Feedback] Feature Proposal: Proc#to_lambda

F1d6cc2b735bfd82c8773172da2aeab9?d=identicon&s=25 Nobuyoshi Nakada (nobu)
on 2014-04-27 03:15
(Received via mailing list)
Issue #9777 has been updated by Nobuyoshi Nakada.

Status changed from Open to Feedback

Why can't you use `break` and `next`?

----------------------------------------
Feature #9777: Feature Proposal: Proc#to_lambda
https://bugs.ruby-lang.org/issues/9777#change-46333

* 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#metho...

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-co....
I think other Ruby developers would like this behavior supported by Ruby
core.
This topic is locked and can not be replied to.