JEP 473: Stream Gatherers (Second Preview)
Ernie Rael
errael at raelity.com
Mon Apr 8 16:42:11 UTC 2024
> Filter isn't many-to-... At all, at no point it collapses a
> subsequence of elements, it only works on one element at a time
I was conflating the behavior of a specific intermediate operation with
a black box view of an operation. Looking at an operation as a black box
is useless (maybe mildly interesting at most). The description of filter
as "one-to-many" threw me off balance (this is the first time I read the
gatherer spec in detail, and I've only looked at streams on an as need
basis, it took this long having brief exposures till I felt ready); but
as was said, the precise description of filter is "1-to-0..1".
I'm still curious about the idea of an "empty" input?. Seems like "many"
on the left side is never "0", in particular something like:
"1..N-to-SomeRange"
Thanks to all,
-ernie
PS. Looking at flatMap (and mapMulti) was a good exercise.
On 24/04/07 11:24 AM, Holo The Sage Wolf wrote:
> Think about `flatMap` (which filter is a special case of), this is
> one-to-many function that can also return 1 or 0 elements for each
> input. So it makes sense to include 0 as "many".
>
> Filter isn't many-to-... At all, at no point it collapses a
> subsequence of elements, it only works on one element at a time
>
> On Sun, 7 Apr 2024, 19:31 Ernie Rael, <errael at raelity.com> wrote:
>
> On 24/04/07 9:11 AM, Viktor Klang wrote:
>> Hi Ernie,
>>
>> "Many" in this case refers to "N", which is "0 ... N",
> OK, I was wondering about "many" including "0".
>> so I'd say while it is techincally correct as-is, perhaps more
>> precise would be to say "1-to-0..1" gatherer, since for every
>> element in, there is 0 or 1 element out.
> I see.
>>
>> Many-to-one would be 0..N -> 1, which means that an empty input
>> would
> "could" not "would"?
>> yield a single output.
>
> Out of curiosity, is either correct technically?
>
>
> Other than at initialization or finish, is it possible to have an
> "empty" input?
>
>
> -ernie
>
>>
>> Cheers,
>> √
>>
>> *
>> *
>> *Viktor Klang*
>> Software Architect, Java Platform Group
>> Oracle
>> ------------------------------------------------------------------------
>> *From:* core-libs-dev <core-libs-dev-retn at openjdk.org>
>> <mailto:core-libs-dev-retn at openjdk.org> on behalf of Ernie Rael
>> <errael at raelity.com> <mailto:errael at raelity.com>
>> *Sent:* Sunday, 7 April 2024 18:06
>> *To:* core-libs-dev at openjdk.org <core-libs-dev at openjdk.org>
>> <mailto:core-libs-dev at openjdk.org>
>> *Subject:* JEP 473: Stream Gatherers (Second Preview)
>>
>> This is about what might be a minor doc issue.
>>
>> In https://openjdk.org/jeps/473 it says
>>
>>> As another example, |Stream::filter| takes a predicate that
>>> determines whether an input element should be passed downstream;
>>> this is simply a stateless one-to-many gatherer.
>> Shouldn't this be "many-to-one"?
>>
>> -ernie
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/core-libs-dev/attachments/20240408/a217d863/attachment-0001.htm>
More information about the core-libs-dev
mailing list