From: akr@... Date: 2016-12-21T06:05:40+00:00 Subject: [ruby-core:78756] [Ruby trunk Bug#12809][Rejected] passing a proc to Kernel#lambda does not create a lambda Issue #12809 has been updated by Akira Tanaka. Status changed from Assigned to Rejected Current behavior is intentional design. If "lambda" change the lambda-ness of the given block, the author of "proc { |a| a * 2 }" can not know how the block is interpreted. This is what the design try to avoid. Rather, it may be possible to raise error on "lambda" with non-lambda proc object. This is different issue, though. ---------------------------------------- Bug #12809: passing a proc to Kernel#lambda does not create a lambda https://bugs.ruby-lang.org/issues/12809#change-62154 * Author: Sylvain Joyeux * Status: Rejected * Priority: Normal * Assignee: Akira Tanaka * Target version: * ruby -v: 2.0.0-p643, 2.1.9, 2.2.5, 2.3.1p112, 2.4.0preview2 * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- I would expect the following: ~~~ p = proc { |a| a * 2 } l = lambda(&p) puts l.lambda? # => true l.call(1, 2) # => ArgumentError ~~~ But it does not, basically `l` there looks very much like a non-lambda proc (another test is that a return in `p` would cause `l.call` to raise LocalJumpError) ~~~ ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: