Issue #14399 has been updated by jzakiya (Jabari Zakiya).


According to the thread you provided the initial suggested name was `Array#product_set`
which was shortened to the current `Array#product`. Its proposed intent was to provide
combination groups of set-like items, and not as an arithmetic operation.

As was stated previously, naming things is Hard!, especially when you can't anticipate all
the unintended consequences.

I think [Crystal](https://crystal-lang.org/api/0.24.1/Enumerable.html) has gotten it correct for this, having both `Enumerable#product` and
`Enumerable#sum` methods. I suspect the overwhelming majority of programmers|users 
coming to Ruby would expects the following behavior too.

```
[2,3,5,7].sum => 17        # the result of adding all the array elements

[2,3,5,7].product => 210   # the result of multiplying all the array elements
```

----------------------------------------
Feature #14399: Add Enumerable#product
https://bugs.ruby-lang.org/issues/14399#change-69941

* Author: jzakiya (Jabari Zakiya)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
For similar reasons for creating `Enumerable#sum` a companion method
`Enumerable#product` is also very useful. Taking the product of
numbers in arrays is a common operation in many numerical algorithms,
especially in number theory and cryptography, and its optimization in
Ruby will make it more conducive to math heavy algorithms and tasks.

This

```
> [2,3,5,7].reduce(:*) => 210
```

can be optimized to this

```
> [2,3,5,7].product => 210
```

It should also allow an initial value

```
> [2,3,5,7].product(2) => 420

> [2,3,5,7].product(0.5) => 105
```
Crystal already has this `method`.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>