<div dir="ltr"><div dir="ltr">On Tue, Mar 28, 2023 at 10:48 AM Ron Pressler <<a href="mailto:ron.pressler@oracle.com" target="_blank">ron.pressler@oracle.com</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">As usual, the main challenge is understanding what exactly is the problem here — is this a specific issue with CF and Stream or something more general — and if there is a general problem, what exactly is it, and does it justify a change to the language. Only after we answer that can we consider adding a language feature.<br></blockquote><div><br></div>Great point - which also makes me curious how we should define the underlying problem here.<br clear="all"></div><div><br></div><div>One problem is "prettier chaining" which as Brian pointed out makes for a relatively weak case.</div><div><br></div><div>What about another problem, which is that in Java it's too hard to "wrap" something with new functionality? I.e., this is the same problem extensions try to solve.<br></div><div><br></div><div>Just to be clear, suppose I invent this (using Kristofer's example):</div><div><br></div><div style="margin-left:40px"><span style="font-family:monospace">public interface BetterStream<T> extends Stream<T> {</span></div><div style="margin-left:40px"><span style="font-family:monospace">    BetterStream<T> parallel(Executor e)<br>    Set<T> toSet()</span></div><div style="margin-left:40px"><span style="font-family:monospace">    <a class="gmail_plusreply" id="plusReplyChip-3">@Override</a><br></span></div><div style="margin-left:40px"><span style="font-family:monospace">    BetterStream<T> filter(Predicate<? super T> pred) // etc.<br></span></div><div style="margin-left:40px"><span style="font-family:monospace">}<br></span></div><div><br></div><div>It's not easy to wrap Streams I encounter to convert them into BetterStreams. I agree with Brian that "API designers should control their API's" so I suppose we're talking about a true "wrap", not a "monkey patch". You can do a "wrap" today but it's tedious and brittle. Could the language make it easier somehow?<br></div><div><br></div><div>I'm sure this has been discussed before. Curious what's the current status of that discussion.<br></div><div><br></div><div>-Archie</div><div><br></div><span>-- </span><br><div dir="ltr">Archie L. Cobbs<br></div></div>