Bikeshed opportunity: compose vs composeWith
Raab, Donald
Donald.Raab at gs.com
Mon Nov 26 14:48:50 PST 2012
What about this?
people.sort(comparing(Person::getLast).thenBy(Person::getFirst))
> -----Original Message-----
> From: Raab, Donald [Tech]
> Sent: Monday, November 26, 2012 5:45 PM
> To: 'Brian Goetz'; Sam Pullara
> Cc: lambda-libs-spec-experts at openjdk.java.net
> Subject: RE: Bikeshed opportunity: compose vs composeWith
>
> Just out of curiosity,I opened up Microsoft Excel and looked how they
> word multi-level sorts.
>
> Sort By -> Column A
> Then By -> Column B
> Then By -> Column C
> Etc.
>
> So "then" in the wording definitely looks good. Not sure if there is
> anything better than thenCompare.
>
> This would be cool to read, but is a different animal.
>
> people.sortBy(Person::getLast).thenBy(Person::getFirst)
>
> We use the word "chain" on our Comparators static utility class in GS
> Collections with varargs. But since you are adding this method to
> Comparator, not sure if chain or chainWith would be a good name.
>
> > -----Original Message-----
> > From: lambda-libs-spec-experts-bounces at openjdk.java.net
> > [mailto:lambda- libs-spec-experts-bounces at openjdk.java.net] On Behalf
> > Of Brian Goetz
> > Sent: Monday, November 26, 2012 3:07 PM
> > To: Sam Pullara
> > Cc: lambda-libs-spec-experts at openjdk.java.net
> > Subject: Re: Bikeshed opportunity: compose vs composeWith
> >
> > I like the "then" convention to indicate sequencing. In context:
> >
> > people.sort(comparing(Person::getLast)
> > .thenCompare(comparing(Person::getFirst)))
> >
> >
> >
> > On 11/26/2012 3:04 PM, Sam Pullara wrote:
> > > How about something that sounds more comparator specific:
> > >
> > > comparator1.thenCompare(comparator2)
> > >
> > > Sam
> > >
> > > On Nov 26, 2012, at 11:57 AM, Kevin Bourrillion <kevinb at google.com
> > > <mailto:kevinb at google.com>> wrote:
> > >
> > >> So... comparator1.compound(comparator2)?
> > >>
> > >>
> > >> On Mon, Nov 26, 2012 at 11:10 AM, Brian Goetz
> > <brian.goetz at oracle.com
> > >> <mailto:brian.goetz at oracle.com>> wrote:
> > >>
> > >> However, this is the first time I'm noticing that you're
> > using
> > >> the name
> > >> compose() not only for function composition, but also for
> > >> forming a
> > >> compound comparator. Has it been suggested that we not
> > reuse the
> > >> compose() name to mean this other thing? Note that there
> > does
> > >> exist a
> > >> compose operation for Comparators, but it's (Function,
> > >> Comparator) ->
> > >> Comparator (Guava puts it in the other order and calls it
> > >> "onResultOf",
> > >> which I'm not recommending).
> > >>
> > >>
> > >> It has not been suggested until now. I am fine calling this
> > >> something that does not contain the string "compose". The key
> > >> concept is "I have two comparators, and I want to build a
> > >> dictionary-order comparator for (O1, O2)."
> > >>
> > >> I am fine with .compose() for functions.
> > >>
> > >> I think .compose(other) is too cryptic for comparators. I
> think
> > >> .composeWith() is better; I can imagine there are other things
> > >> that are also better. Now taking suggestions. (Though
> > onResultOf
> > >> does not seem better.)
> > >>
> > >>
> > >>
> > >>
> > >> --
> > >> Kevin Bourrillion | Java Librarian | Google, Inc.
> > >> |kevinb at google.com <mailto:kevinb at google.com>
> > >>
> > >
More information about the lambda-libs-spec-observers
mailing list