----- Mail original -----
> De: "Remi Forax" <fo...@univ-mlv.fr>
> À: "Daniel Fuchs" <daniel.fu...@oracle.com>
> Cc: "Patrick Concannon" <patrick.concan...@oracle.com>, "core-libs-dev" 
> <core-libs-dev@openjdk.java.net>
> Envoyé: Jeudi 25 Juin 2020 23:46:08
> Objet: Re: RFR[8238286]: 'Add new flatMap stream operation that is more 
> amenable to pushing’

> ----- Mail original -----
>> De: "Daniel Fuchs" <daniel.fu...@oracle.com>
>> À: "Remi Forax" <fo...@univ-mlv.fr>, "Patrick Concannon"
>> <patrick.concan...@oracle.com>
>> Cc: "core-libs-dev" <core-libs-dev@openjdk.java.net>
>> Envoyé: Jeudi 25 Juin 2020 11:28:00
>> Objet: Re: RFR[8238286]: 'Add new flatMap stream operation that is more 
>> amenable
>> to pushing’
> 
>> Hi Rémi,
> 
> Hi Daniel,
> 
>> 
>> On 25/06/2020 00:32, Remi Forax wrote:
>>> I get that you want to keep Consumer<R> instead of Consumer<? super R> 
>>> because
>>> Consumer<? super R> is not a valid target type for a lambda, but the 
>>> BiConsumer
>>> should be able to take a ? super Consumer<R> instead of just Consumer<R>.
>> 
>> Though I don't dispute that a strict application of the rules of
>> covariance and contravariance would require to design a signature
>> that accepts a `? super Consumer<R>` - how would you implement a
>> BiConsumer with a signature that doesn't take a Consumer<R>?
>> 
>> Such an implementation would be unable to push anything downstream
>> without having to cast back the consumer to Consumer<R>.
> 
> if i have already have a BiConsumer<Consumer<Object>, Object>, i would like to
> be able to call Stream<String>.mapMulti() with that bi-consumer as argument.

and obviously, i got it wrong, Consumer<Object> is not a super-type of 
Consumer<String>, it should be a BiConsumer<Consumer<?>, Object> or a 
BiConsumer<? super Consumer<String>, Object>, etc.

> 
>> 
>> My personal preference would be to vote in favor of the simpler
>> signature - which IMO is more readable and easier to understand.
>> 
>> best regards,

regards,
Rémi

> 
>> 
> > -- daniel

Reply via email to