[ruby-core:94292] [Ruby master Feature#14399] Add Enumerable#product
From:
Ruby-Lang@...
Date:
2019-08-11 21:34:46 UTC
List:
ruby-core #94292
SXNzdWUgIzE0Mzk5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgandtaXR0YWcgKErDtnJnIFcgTWl0dGFn KS4NCg0KDQpqemFraXlhIChKYWJhcmkgWmFraXlhKSB3cm90ZToNCj4gVGhhdCdzIGludGVyZXN0 aW5nIGJlY2F1c2UgSSBuZXZlciBpbnR1aXRpdmVseSB1bmRlcnN0b29kIHRoZSB1c2UNCj4gb2Yg YGluamVjdGANCg0KVGhpcyBpcyBiYXN0YXJkaXplZCBmcm9tIFNtYWxsdGFsay4gSW4gU21hbGx0 YWxrLCBtZXRob2QgbmFtZXMgY29uc2lzdCBvZiBtdWx0aXBsZSB3b3JkcyBhbmQgdGhlIGFyZ3Vt ZW50cyBhcmUgd3JpdHRlbiBpbiBiZXR3ZWVuIHRoZSB3b3Jkcy4gSW4gU21hbGx0YWxrLCB0aGUg bWV0aG9kIGlzIGNhbGxlZCBgaW5qZWN0OmludG86YCBhbmQgaXMgY2FsbGVkIGxpa2UgYGFDb2xs ZWN0aW9uIGluamVjdDogYVZhbHVlIGludG86IGFCbG9ja2AsIGkuZS4geW91IGluamVjdCBhbiBh Y2N1bXVsYXRvciBpbnRvIGEgYmxvY2sgdGhhdCBpcyBleGVjdXRlZCBmb3IgZWFjaCBlbGVtZW50 LiBUaGlzIGEpIG1ha2VzIHNlbnNlLCBhbmQgYikgZml0cyB3aXRoIHRoZSAiaW4tam9rZSIgb2Yg bmFtaW5nIGFsbCBvZiBTbWFsbHRhbGsncyBjb2xsZWN0aW9uIG9wZXJhdGlvbnMgdXNpbmcgbmFt ZXMgdGhhdCByaHltZSAoYGluamVjdDppbnRvOmAsIGBjb2xsZWN0OmAsIGByZWplY3Q6YCwgYHNl bGVjdDpgLCBgZGV0ZWN0OmApLiBSdWJ5IGlzIGhlYXZpbHkgYmFzZWQgb24gU21hbGx0YWxrLCBz byBpdCBpcyBnZW5lcmFsbHkgZXhwZWN0ZWQgdGhhdCBuZXdjb21lcnMgdG8gUnVieSB3aWxsIGJl IGZhbWlsaWFyIHdpdGggU21hbGx0YWxrJ3MgY29sbGVjdGlvbiBvcGVyYXRpb25zLCB0aGVyZWZv cmUgdGhlIHNsaWdodGx5IHVudXN1YWwgbmFtZXMuDQoNCkhvd2V2ZXIsIHRoZSBtZWFuaW5nIG9m ICJpbmplY3RpbmcgYW4gYWNjdW11bGF0b3IgaW50byBhIGJsb2NrIiBnZXRzIGxvc3QgYmVjYXVz ZSBpbiBSdWJ5LCB3ZSBjYW5ub3Qgd3JpdGUgaXQgdGhhdCB3YXksIGFuZCBzbyB3ZSBsb3NlIHRo ZSAiaW50byIgZnJvbSB0aGUgbmFtZS4NCg0KPiBbSV0gYWx3YXlzIG5vdyB1c2UgDQo+IGByZWR1 Y2VgLCB3aGljaCBb4oCmXSBoYXMgbG9uZyBiZWVuIGEgY29uY2VwdCBpbiBmdW5jdGlvbmFsIA0K PiBwcm9ncmFtbWluZy4NCg0KTm90ZSBob3dldmVyLCB0aGF0IGF0IGxlYXN0IGluIHNvbWUgcHJv Z3JhbW1pbmcgbGFuZ3VhZ2VzLCBgcmVkdWNlYCBpcyBhICpyZXN0cmljdGVkKiB2ZXJzaW9uIG9m IGEgYGZvbGRgIHdoaWNoIGhhcyBhIHJlc3RyaWN0ZWQgdHlwZSBzaWduYXR1cmUgYW5kIG9ubHkg d29ya3Mgb24gbm9uLWVtcHR5IGNvbGxlY3Rpb25zLiBJbiBwYXJ0aWN1bGFyLCBpbiBTY2FsYSwg YHJlZHVjZWAgaXMgZXF1aXZhbGVudCB0byBSdWJ5J3MgYGluamVjdGAgd2l0aCBvbmx5IGEgYmxv Y2sgYXJndW1lbnQsIGFuZCBgZm9sZGAgaXMgZXF1aXZhbGVudCB0byBSdWJ5J3MgYGluamVjdGAg d2l0aCBhbiBleHBsaWNpdCBzdGFydCBhcmd1bWVudC4gKEluIEVDTUFTY3JpcHQgT1RPSCwgYHJl ZHVjZWAgaXMgdGhlIGdlbmVyYWwgdmVyc2lvbi4pDQogDQo+IGByZWR1Y2VgIFvigKZdIHdhcyAo SSBiZWxpZXZlKSBjcmVhdGVkIGJ5IEhhc2tlbGwgKHRoZSBwZXJzb24gYW5kIA0KPiBwcm9ncmFt bWluZyBsYW5ndWFnZSkNCg0KQWN0dWFsbHksIEhhc2tlbGwgY2FsbHMgdGhlIGdlbmVyYWwgdmVy c2lvbiBgZm9sZGAgYW5kIHRoZSByZXN0cmljdGVkIHZlcnNpb24gYGZvbGQxYCAoYmVjYXVzZSBp dCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZWxlbWVudCwgYW5kIHdpbGwgdGFrZSBlbGVtZW50IG51 bWJlciAxIGFzIHRoZSBhY2N1bXVsYXRvcikuDQoNCj4gVG8gbWUgaXQgc2F5cyB0aGF0IGFuIGFy cmF5IG9mIG51bWJlcnMgKGl0ZW1zKSB3aWxsIGJlDQo+IHJlZHVjZWR8Y29sbGFwc2VkIGludG8g YSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gdGhlIGdpdmVuIG9wZXJhdGlvbi4NCg0KVGhpcyBpZGVh IG9mICJyZWR1Y2luZyB0byBhIHNpbmdsZSB2YWx1ZSIgaXMgdW5mb3J0dW5hdGVseSBzb21ld2hh dCBtaXNsZWFkaW5nLiBBIGxvdCBvZiBwZW9wbGUgSSB0YWxrIHRvIHRoaW5rIHRoYXQgYGZvbGRg IGNhbiBvbmx5IGJlIHVzZWQgZm9yIHN1bW1pbmcsIGJlY2F1c2UgdGhleSBkb24ndCB1bmRlcnN0 YW5kIHRoYXQgYSkgdGhlICJzaW5nbGUgdmFsdWUiIGNhbiBiZSBhIGRpZmZlcmVudCB0eXBlIGZy b20gdGhlIGVsZW1lbnQgdHlwZSBhbmQgYikgdGhlICJzaW5nbGUgdmFsdWUiIGNhbiBiZSBhcmJp dHJhcmlseSBjb21wbGV4LCBlLmcuIGFuIGFycmF5LCBhIHRyZWUsIGFuIGluc3RydWN0aW9uIHNl cXVlbmNlLCBldGMuDQoNCkluIGZhY3QsIGBmb2xkYCBpcyBhICpnZW5lcmFsIG1ldGhvZCBvZiBp dGVyYXRpb24qLCBpdCBjYW4gZG8gKmV2ZXJ5dGhpbmcqIHRoYXQgYSBsb29wIGNhbiBkby4gQSBj b21waWxlciBpcyBzaW1wbHkgYSBmb2xkIG92ZXIgdGhlIEFTVCwgZm9yIGV4YW1wbGUuIChUaGUg cmVzdHJpY3RlZCB2ZXJzaW9uLCBpLmUuIHdoYXQgSGFza2VsbCBjYWxscyBgZm9sZDFgIGFuZCBT Y2FsYSBjYWxscyBgcmVkdWNlYCBPVE9IIGlzICpub3QqIGdlbmVyYWwuKQ0KDQpPciwgaW4gc2hv cnQ6IG5hbWluZyBpcyBoYXJkIDotRA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpGZWF0dXJlICMxNDM5OTogQWRkIEVudW1lcmFibGUjcHJvZHVjdA0KaHR0cHM6 Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0Mzk5I2NoYW5nZS04MDYyMg0KDQoqIEF1dGhv cjoganpha2l5YSAoSmFiYXJpIFpha2l5YSkNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9yaXR5OiBO b3JtYWwNCiogQXNzaWduZWU6IA0KKiBUYXJnZXQgdmVyc2lvbjogDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGb3Igc2ltaWxhciByZWFzb25zIGZvciBjcmVhdGlu ZyBgRW51bWVyYWJsZSNzdW1gIGEgY29tcGFuaW9uIG1ldGhvZA0KYEVudW1lcmFibGUjcHJvZHVj dGAgaXMgYWxzbyB2ZXJ5IHVzZWZ1bC4gVGFraW5nIHRoZSBwcm9kdWN0IG9mDQpudW1iZXJzIGlu IGFycmF5cyBpcyBhIGNvbW1vbiBvcGVyYXRpb24gaW4gbWFueSBudW1lcmljYWwgYWxnb3JpdGht cywNCmVzcGVjaWFsbHkgaW4gbnVtYmVyIHRoZW9yeSBhbmQgY3J5cHRvZ3JhcGh5LCBhbmQgaXRz IG9wdGltaXphdGlvbiBpbg0KUnVieSB3aWxsIG1ha2UgaXQgbW9yZSBjb25kdWNpdmUgdG8gbWF0 aCBoZWF2eSBhbGdvcml0aG1zIGFuZCB0YXNrcy4NCg0KVGhpcw0KDQpgYGANCj4gWzIsMyw1LDdd LnJlZHVjZSg6KikgPT4gMjEwDQpgYGANCg0KY2FuIGJlIG9wdGltaXplZCB0byB0aGlzDQoNCmBg YA0KPiBbMiwzLDUsN10ucHJvZHVjdCA9PiAyMTANCmBgYA0KDQpJdCBzaG91bGQgYWxzbyBhbGxv dyBhbiBpbml0aWFsIHZhbHVlDQoNCmBgYA0KPiBbMiwzLDUsN10ucHJvZHVjdCgyKSA9PiA0MjAN Cg0KPiBbMiwzLDUsN10ucHJvZHVjdCgwLjUpID0+IDEwNQ0KYGBgDQpDcnlzdGFsIGFscmVhZHkg aGFzIHRoaXMgYG1ldGhvZGAuDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn Lw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/ c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4v bWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K