From: Yukihiro Matsumoto Date: 2011-12-12T06:03:35+09:00 Subject: [ruby-core:41595] Re: [ruby-trunk - Bug #5694][Open] Proc#arity doesn't take optional arguments into account. Hi, In message "Re: [ruby-core:41593] [ruby-trunk - Bug #5694][Open] Proc#arity doesn't take optional arguments into account." on Mon, 12 Dec 2011 02:06:26 +0900, Marc-Andre Lafortune writes: |It is strictly superior because it is consistent with Method#arity and with Proc#arity for method converted to proc. Currently: | | def Object.foo(a=42); end | foo = Object.method(:foo).to_proc | bar = ->(a=42){} | foo.class == bar.class # => true | foo.lambda? == bar.lambda? # => true | foo.arity == bar.arity # => false | |It is also consistent with the current official documentation. This is a problem. We have to be consistent here. Let us check. |I think it is a clear defect as there is a contradiction with the official documentation. Don't emphasize "official" too much. Historically "official" documentation has not been written by the original author (me) nor implementer of the feature, so that it had often been written from guessing from the code.