Bikeshed opportunity: compose vs composeWith

Brian Goetz brian.goetz at oracle.com
Mon Nov 26 12:06:42 PST 2012


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