[#100689] [Ruby master Feature#17303] Make webrick to bundled gems or remove from stdlib — hsbt@...
Issue #17303 has been reported by hsbt (Hiroshi SHIBATA).
11 messages
2020/11/02
[#100852] [Ruby master Feature#17326] Add Kernel#must! to the standard library — zimmerman.jake@...
SXNzdWUgIzE3MzI2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGpleiAoSmFrZSBaaW1tZXJtYW4pLg0K
24 messages
2020/11/14
[#100930] [Ruby master Feature#17333] Enumerable#many? — masafumi.o1988@...
Issue #17333 has been reported by okuramasafumi (Masafumi OKURA).
10 messages
2020/11/18
[#101071] [Ruby master Feature#17342] Hash#fetch_set — hunter_spawn@...
Issue #17342 has been reported by MaxLap (Maxime Lapointe).
26 messages
2020/11/25
[ruby-core:100936] [Ruby master Feature#17312] New methods in Enumerable and Enumerator::Lazy: flatten, product, compact
From:
zverok.offline@...
Date:
2020-11-18 16:18:22 UTC
List:
ruby-core #100936
Issue #17312 has been updated by zverok (Victor Shepelev).
@p8
> I was really suprised that `#last` isn't implemented in Enumerable while `#first` is.
It is natural.
That's because Enumerable is "uni-directional" (it is not guaranteed that you can iterate through it more than once, and there is no way to go back). Imagine this:
```ruby
lines = File.each_line('foo.txt')
lines.last # -- if it worked, ALL the file is already read here, and you can't do anything reasonable with it
```
Also, `last` is "intuitively" cheap ("just give me last element, what's the problem?"), but as `Enumerable` relies on `each`, and `each` only, `Enumerable#last` would mean "go through entire `each` till it would be exhausted, and give the last value", which might be very pricey.
All the methods I am trying to propose are compatible with uni-directional `#each`
----------------------------------------
Feature #17312: New methods in Enumerable and Enumerator::Lazy: flatten, product, compact
https://bugs.ruby-lang.org/issues/17312#change-88590
* Author: zverok (Victor Shepelev)
* Status: Open
* Priority: Normal
----------------------------------------
(The offspring of #16987, which was too vague/philosophical)
I propose to add to `Enumerable` and `Enumerator::Lazy` the following methods:
* `compact`
* `product`
* `flatten`
All of them can be performed with a one-way enumerator. All of them make sense for situations other than "just an array". All of them can be used for processing large sequences, and therefore meaningful to add to `Lazy`.
--
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>