Survey on map/flatMap disambiguation
Joe Bowbeer
joe.bowbeer at gmail.com
Thu Mar 14 12:31:06 PDT 2013
Does the use of mapToObj() allow a boxed() to be removed? That could be a
feature.
On Thu, Mar 14, 2013 at 12:21 PM, Brian Goetz <brian.goetz at oracle.com>wrote:
> Right. For the primitive streams, I applied the "add a suffix if you are
> changing types", so IntStream.map() is for int->int, and mapToObj() is for
> int->Object.
>
> What compelled me about the results of this survey is that multiple people
> explicitly called out that they liked the mapToXxx not for consistency, but
> for the explicitness of it. Because the types are lost to method chaining,
> .mapToInt() carries a lot of information about the fact that there's a type
> switcheroo going on. Whereas overloaded map() is magic.
>
>
> On 3/14/2013 3:11 PM, Joe Bowbeer wrote:
>
>> The survey (and proposal) did not mention the affect on Int/Long/Double
>> streams either. mapToInt, mapToObj, map...
>>
>> Is this verbose strangeness introduced in the map namespace worth having
>> consistency with flatMap? I'd rather sacrifice flatMap than change map.
>>
>> I think the results of this survey should be tabled until a complete
>> proposal is presented.
>>
>>
>>
>> On Thu, Mar 14, 2013 at 10:26 AM, Kevin Bourrillion <kevinb at google.com
>> <mailto:kevinb at google.com>> wrote:
>>
>> Ouch. That is pretty gnarly. Did we realize that before we voted?
>>
>>
>>
>> On Thu, Mar 14, 2013 at 10:04 AM, Brian Goetz
>> <brian.goetz at oracle.com <mailto:brian.goetz at oracle.com**>> wrote:
>>
>> The survey is closed, results are here:
>>
>> https://www.surveymonkey.com/_**_sr.aspx?sm=__**
>> 9UyN8RRvMX8BnpTdd4rYgDlXU9uUVA**__LNDjNn_2fY2e9_2fo_3d<https://www.surveymonkey.com/__sr.aspx?sm=__9UyN8RRvMX8BnpTdd4rYgDlXU9uUVA__LNDjNn_2fY2e9_2fo_3d>
>>
>> <https://www.surveymonkey.com/**sr.aspx?sm=**
>> 9UyN8RRvMX8BnpTdd4rYgDlXU9uUVA**LNDjNn_2fY2e9_2fo_3d<https://www.surveymonkey.com/sr.aspx?sm=9UyN8RRvMX8BnpTdd4rYgDlXU9uUVALNDjNn_2fY2e9_2fo_3d>
>> >
>>
>> The sense of the EG was strongly in favor of disambiguating both
>> map and flatMap; several argued that they liked the "less magic"
>> aspect of it, and the explicitness of where we go from reference
>> to primitive streams and back.
>>
>> This does create a possibility for performance bugs, where users
>> do:
>>
>> stuff.map(Foo::size).reduce(0, Integer::sum)
>>
>> instead of
>>
>> stuff.mapToInt(Foo::size).__**reduce(0, Integer::sum)
>>
>>
>> Both will now compile, but the former will be boxed and the
>> latter won't be. The previous status quo saved users from
>> themselves in this case.
>>
>> Will make the following changes:
>>
>> Stream.map -> {map,mapTo{Int,Long,Double}}
>> Stream.flatMap -> {flatMap,flatMapTo{Int,Long,__**Double}}
>>
>> {Int,Long,Double}Stream.map -> map,mapToObj
>>
>>
>>
>> On 3/10/2013 7:51 PM, Brian Goetz wrote:
>>
>> I've posted a survey for the EG at:
>>
>> https://www.surveymonkey.com/_**_s/NT5DW7G<https://www.surveymonkey.com/__s/NT5DW7G>
>>
>> <https://www.surveymonkey.com/**s/NT5DW7G<https://www.surveymonkey.com/s/NT5DW7G>
>> >
>>
>> where people can express their opinion on the issue of flatMap
>> disambiguation (see thread entitled "flatMap ambiguity").
>>
>> The password has been communicated directly to the EG;
>> contact me if you
>> didn't get it.
>>
>> Usual survey rules: enter your name with your response, all
>> results will
>> be made public after the survey closes. I'll set a closing
>> time of 6PM
>> PT Wednesday of this week.
>>
>>
>>
>>
>> --
>> Kevin Bourrillion | Java Librarian | Google, Inc. |kevinb at google.com
>> <mailto:kevinb at google.com>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/lambda-libs-spec-experts/attachments/20130314/b6276118/attachment-0001.html
More information about the lambda-libs-spec-experts
mailing list