[ruby-core:119950] [Ruby master Feature#20899] Reconsider adding `Array#find_map`
From:
"austin (Austin Ziegler) via ruby-core" <ruby-core@...>
Date:
2024-11-16 20:43:03 UTC
List:
ruby-core #119950
SXNzdWUgIzIwODk5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYXVzdGluIChBdXN0aW4gWmllZ2xlciku DQoNCg0KRGFuMDA0MiAoRGFuaWVsIERlTG9ybWUpIHdyb3RlIGluICNub3RlLTM6DQo+IEFub3Ro ZXIgaWRlYSBpcyBgZmlsdGVyX21hcChmaXJzdDogdHJ1ZSlgDQo+IE9yIGBmaWx0ZXJfbWFwKGxp bWl0OiBOKWAgdG8gcmV0dXJuIGF0IG1vc3QgTiBlbGVtZW50cyAoaW4gdGhpcyBjYXNlIDEpLg0K PiBUaGUgaWRlYSBoYXMgZmxvYXRlZCB1cCBiZWZvcmUgdGhhdCBtb3N0IEVudW1lcmFibGUgbWV0 aG9kcyB3b3VsZCBiZW5lZml0IGZyb20gYSBgbGltaXRgIGtleXdvcmQuDQoNCk1vc3Qgb2YgdGhl IGNhc2VzIHdoZXJlIGVudW1lcmFibGUgbWV0aG9kcyB3b3VsZCBiZW5lZml0IGZyb20gYSBgbGlt aXRgIGtleXdvcmQgd291bGQgcHJvYmFibHkgYmUgYmV0dGVyIHNlcnZlZCBieSB0aGUgdXNlIG9m IGAjbGF6eWAgZW51bWVyYWJsZXMgd2l0aCBlaXRoZXIgYCN0YWtlYCBvciBgI2ZpcnN0YC4NCg0K SSBwZXJzb25hbGx5IGRvbid0IGZpbmQgdGhlIGFyZ3VtZW50IGFnYWluc3QgdGhlIGV4dHJhIGZ1 bmN0aW9uIGNhbGxzIGNvbnZpbmNpbmcgYW5kIGZlZWwgdGhhdCB0aGlzIHdvdWxkIGJlIGhpZGlu ZyBjb21wbGV4aXR5IHRoYXQgbWlnaHQgYmUgaGFyZCB0byBwcm9maWxlLiAqKklmKiogdGhpcyBj b3VsZCBiZSB1c2VkIHRvIHByb2R1Y2Ugb3B0aW1pemVkIGluc3RydWN0aW9ucyB2cyB0aGUgbGF6 eSBhcHByb2FjaCB3aXRoIFlKSVQgb3Igc29tZXRoaW5nLCB0aGVuIG1heWJlIHRoZXJlJ3MgYW4g YXJndW1lbnQgZm9yIGl0Lg0KDQpFbGl4aXIgZGVwcmVjYXRlZCBgRW51bS5maWx0ZXJfbWFwLzJg IGFmdGVyIGJlZ2lubmluZyB3aXRoIGl0IChpZiB0aGVyZSdzIGV2ZXIgYW4gRWxpeGlyIDIsIGBm aWx0ZXJfbWFwLzJgIHdpbGwgYmUgcmVtb3ZlZDsgYXMgaXQgaXMgbm93LCBpdCByZXN1bHRzIGlu IGNvbXBpbGUgd2FybmluZ3MuKSBJdCAqZG9lcyogaGF2ZSBsaXN0IGNvbXByZWhlbnNpb25zOyBJ 4oCZbSB3b25kZXJpbmcgaWYgUnVieSdzIHBhdHRlcm4gbWF0Y2hpbmcgY291bGQgYmUgdXNlZCBp biBhbiBlZmZpY2llbnQgd2F5IGhlcmUgdG8gZW11bGF0ZSBsaXN0IGNvbXByZWhlbnNpb25zIGZv ciBjYXNlcyBsaWtlIHRoaXMuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCkZlYXR1cmUgIzIwODk5OiBSZWNvbnNpZGVyIGFkZGluZyBgQXJyYXkjZmluZF9tYXBg DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjA4OTkjY2hhbmdlLTExMDY3Mw0K DQoqIEF1dGhvcjogdG95IChJdmFuIEt1Y2hpbikNCiogU3RhdHVzOiBPcGVuDQotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJIHdvdWxkIGxpa2UgdG8gcmV0cnkgcHJv cG9zaW5nIG1ldGhvZCBgQXJyYXkjZmluZF9tYXBgIHRoYXQgd2FzIHJlamVjdGVkIGluIFs4NDIx XShodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvODQyMSkgd2hpY2ggaGFwcGVuZWQg YmVmb3JlIGludHJvZHVjdGlvbiBvZiBgZmlsdGVyX21hcGAgaW4gWzE1MzIzXShodHRwczovL2J1 Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTUzMjMpLg0KSXQgd291bGQgbWFrZSBjb2RlIG5pY2Vy IHdoZW5ldmVyIHRoZXJlIGlzIGEgbmVlZCB0byBnZXQgdGhlIGZpcnN0IHRydXRoeSByZXN1bHQg b2YgYXBwbHlpbmcgc29tZSBjb2RlLg0KDQpBZGFwdGluZyBleGFtcGxlcyBmcm9tIGBmaWx0ZXJf bWFwYCBkb2N1bWVudGF0aW9uLCBidXQgaWYgSSBuZWVkIG9ubHkgdGhlIGZpcnN0IHZhbHVlOg0K YGBgcmINCigxLi45KS5maW5kX21hcCB7fGl8IGkgKiAyIGlmIGkuZXZlbj8gfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgPT4gNA0Ke2ZvbzogMCwgYmFyOiAxLCBiYXo6IDJ9LmZpbmRf bWFwIHt8a2V5LCB2YWx1ZXwga2V5IGlmIHZhbHVlLmV2ZW4/IH0gIyA9PiA6Zm9vDQpgYGANCg0K T3IgYW4gZXhhbXBsZSBvZiBnZXR0aW5nIG1hdGNoIGdyb3VwIGZvciBmaXJzdCBzdWNjZXNzZnVs IG1hdGNoOg0KDQpgYGByYg0KbGlzdCA9IFsnc29tZSAxMjMnLCAnbGlzdCAyMzQnLCAnb2YgMzQ1 JywgJ3N0cmluZ3MgNDU2J10NCg0KbGlzdC5maW5kX21hcHsgfHN8IHNbL1xBb2YgKFxkKylcei8s IDFdIH0gIyA9PiAiMzQ1Ig0KYGBgDQoNCkN1cnJlbnRseSBJIGltYWdpbmUgZWl0aGVyIG1vcmUg Y29kZSBhbmQvb3IgaW5lZmZpY2llbmN5IChleHRyYSBjYWxscyBhbmQvb3Igb2JqZWN0cyk6DQoN CmBgYHJiDQojIGNvZGUgY2FsbGVkIHR3aWNlDQpsaXN0LmZpbmR7IHxzfCBzWy9cQW9mIChcZCsp XHovLCAxXSB9Ji50aGVueyB8c3wgc1svXEFvZiAoXGQrKVx6LywgMV0gfSAjID0+ICIzNDUiDQoN CiMgbW9yZSBsb2dpYw0KcmVzdWx0ID0gbmlsDQpsaXN0LmVhY2ggZG8gfHN8DQogIGJyZWFrIGlm IChyZXN1bHQgPSBzWy9cQW9mIChcZCspXHovLCAxXSkNCmVuZA0KcmVzdWx0ICMgPT4gIjM0NSIN Cg0KIyBvcg0KcmVzdWx0ID0gbmlsDQpsaXN0LmZpbmQgZG8gfHN8DQogIHJlc3VsdCA9IHNbL1xB b2YgKFxkKylcei8sIDFdDQplbmQNCnJlc3VsdCAjID0+ICIzNDUiDQoNCiMgZXh0cmEgY2FsbHMg Zm9yIGl0ZW1zIHdoaWNoIGNvbWUgYWZ0ZXIgaXRlbSB0aGF0IHdlIHdlcmUgbG9va2luZyBmb3IN Cmxpc3QubWFweyB8c3wgc1svXEFvZiAoXGQrKVx6LywgMV0gfS5maW5keyBfMSB9ICMgPT4gIjM0 NSINCg0KIyB1c2luZyBsYXp5DQpsaXN0LmxhenkubWFweyB8c3wgc1svXEFvZiAoXGQrKVx6Lywg MV0gfS5maW5keyBfMSB9ICMgPT4gIjM0NSINCg0KIyBvciBhcyBzdWdnZXN0ZWQgYnkgQGFsZXhi YXJyZXQgaW4gaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzg0MjE/dGFiPWhpc3Rv cnkjbm90ZS03DQpsaXN0LmxhenkuZmlsdGVyX21hcHsgfHN8IHNbL1xBb2YgKFxkKylcei8sIDFd IH0uZmlyc3QgIyA9PiAiMzQ1Ig0KDQojIHVzaW5nIHRyaWNrcywgYXMgc3VnZ2VzdGVkIGJ5IEB6 dmVyb2sgaW4gaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzg0MjE/dGFiPWhpc3Rv cnkjbm90ZS00DQpsaXN0LmZpbmR7IHxzfCByZXN1bHQgPSBzWy9cQW9mIChcZCspXHovLCAxXSBh bmQgYnJlYWsgcmVzdWx0IH0gIyA9PiAiMzQ1Ig0KYGBgDQoNCkltcGxlbWVudGF0aW9uIGluIHJ1 YnkgY2FuIGJlOg0KYGBgcmINCkVudW1lcmFibGUuY2xhc3NfZXZhbCBkbw0KICBkZWYgZmluZF9t YXAoJmJsb2NrKQ0KICAgIGVhY2ggZG8gfGVsZW1lbnR8DQogICAgICBibG9ja19yZXN1bHQgPSBi bG9jay5jYWxsKGVsZW1lbnQpDQogICAgICByZXR1cm4gYmxvY2tfcmVzdWx0IGlmIGJsb2NrX3Jl c3VsdA0KICAgIGVuZA0KICAgIA0KICAgIG5pbA0KICBlbmQNCmVuZA0KYGBgDQoNCkFuIGV4YW1w bGUgZnJvbSBhbm90aGVyIGxhbmd1YWdlIC0gc2NhbGEgbWV0aG9kIFtgY29sbGVjdGBdKGh0dHBz Oi8vd3d3LnNjYWxhLWxhbmcub3JnL2FwaS8zLjUuMi9zY2FsYS9jb2xsZWN0aW9uL0FycmF5T3Bz Lmh0bWwjY29sbGVjdC02OGUpIHdvcmtzIGFsaWtlIGBmaWx0ZXJfbWFwYCBhbmQgW2Bjb2xsZWN0 Rmlyc3RgXShodHRwczovL3d3dy5zY2FsYS1sYW5nLm9yZy9hcGkvMy41LjIvc2NhbGEvY29sbGVj dGlvbi9BcnJheU9wcy5odG1sI2NvbGxlY3RGaXJzdC0yNWQpIHdvdWxkIGJlIGxpa2UgYGZpbmRf bWFwYC4NCg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGlu ZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5k IGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUg aW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3Jl Lm1sLnJ1YnktbGFuZy5vcmcv