# Proc#arity bug?

**URL:** <https://www.ruby-forum.com/t/proc-arity-bug/59823>\
**Category:** Ruby\
**Created:** [May 7, 2006, 5:03am UTC](https://www.ruby-forum.com/t/proc-arity-bug/59823 "2006-05-07T05:03:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![polypus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b5ac83/32.png) [@polypus](https://www.ruby-forum.com/u/polypus)\
**Post date:** [May 7, 2006, 5:03am UTC](https://www.ruby-forum.com/t/proc-arity-bug/59823/1 "2006-05-07T05:03:08Z")

</div>

p = proc {}  
p.arity -\> -1

shouldn’t that be returning 0?

btw p = proc { |\*a| } gives me -1 like it should.

ruby 1.8.4 (2005-12-24) [i686-linux]

---

<div class="post-metadata">

**Author:** ![polypus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b5ac83/32.png) [@polypus](https://www.ruby-forum.com/u/polypus)\
**Post date:** [May 7, 2006, 9:38am UTC](https://www.ruby-forum.com/t/proc-arity-bug/59823/2 "2006-05-07T09:38:08Z")

</div>

On Sun, May 07, 2006 at 01:11:44PM +0900, Logan C. wrote:

> It’s not a bug it’s a feature:
> 
> proc { || } has arity 0, proc {} takes any number of args and ignores  
> them.

Note that lambda{}.arity == 0 in 1.9:

RUBY\_VERSION # =\> “1.9.0”  
RUBY\_RELEASE\_DATE # =\> “2006-05-01”  
lambda{ }.arity # =\> 0  
lambda{}.call(1,2,3)

# ~\> -:4: wrong number of arguments (3 for 0) (ArgumentError)

# ~\> from -:4

---

<div class="post-metadata">

**Author:** ![polypus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b5ac83/32.png) [@polypus](https://www.ruby-forum.com/u/polypus)\
**Post date:** [May 7, 2006, 6:12am UTC](https://www.ruby-forum.com/t/proc-arity-bug/59823/3 "2006-05-07T06:12:06Z")

</div>

On May 6, 2006, at 11:03 PM, polypus wrote:

> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

It’s not a bug it’s a feature:

proc { || } has arity 0, proc {} takes any number of args and ignores  
them.

---

<div class="post-metadata">

**Author:** ![polypus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b5ac83/32.png) [@polypus](https://www.ruby-forum.com/u/polypus)\
**Post date:** [May 7, 2006, 11:05am UTC](https://www.ruby-forum.com/t/proc-arity-bug/59823/4 "2006-05-07T11:05:58Z")

</div>

> > > > > “M” == Mauricio F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

M\> lambda{ }.arity # =\> 0  
M\> lambda{}.call(1,2,3)  
M\> # ~\> -:4: wrong number of arguments (3 for 0) (ArgumentError)  
M\> # ~\> from -:4

moulon% ruby -ve ‘p proc{}.arity; p proc{}.call(1,2,3)’  
ruby 1.9.0 (2006-05-01) [i686-linux]  
0  
nil  
moulon%

Guy Decoux

---

<div class="post-metadata">

**Author:** ![polypus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b5ac83/32.png) [@polypus](https://www.ruby-forum.com/u/polypus)\
**Post date:** [May 7, 2006, 4:19pm UTC](https://www.ruby-forum.com/t/proc-arity-bug/59823/5 "2006-05-07T16:19:49Z")

</div>

Hi,

In message “Re: Proc#arity bug?”  
on Sun, 7 May 2006 18:04:16 +0900, ts [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|moulon% ruby -ve ‘p proc{}.arity; p proc{}.call(1,2,3)’  
|ruby 1.9.0 (2006-05-01) [i686-linux]  
|0  
|nil

Hmm, indeed it’s inconsistent. I will fix, either arity to return -1,  
or call to raise ArgumentError.

```
						matz.

```
