From: nathanielsullivan00@... Date: 2018-01-28T00:46:06+00:00 Subject: [ruby-core:85165] [Ruby trunk Feature#14399] Add Enumerable#product Issue #14399 has been updated by nate00 (Nate Sullivan). I believe `Enumerable#product` is named after the [Cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) (also called just "product" in set theory). For example, see the discussion in [issue 7444](https://bugs.ruby-lang.org/issues/7444). Renaming it to `combinations` or `combine` might cause people to think it's related to mathematical [combinations](https://en.wikipedia.org/wiki/Combination), but as far as I can tell, it isn't related. ---------------------------------------- Feature #14399: Add Enumerable#product https://bugs.ruby-lang.org/issues/14399#change-69912 * 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: