Re: sort-by reverse order?

2020-10-14 Thread Andy Fingerhut
This document goes into fairly deep dive on other ways to do it, including
a gotcha on edge cases of using something like (comp - compare) that will
rarely if ever bite you, but some people may want to know about them to
avoid them.

https://clojure.org/guides/comparators

Andy

On Wed, Oct 14, 2020 at 7:58 AM Matthew O. Smith  wrote:

> Google brought this up in 2020
>
> Try
> (comp - compare)
>
>
>
> On Tuesday, December 23, 2014 at 10:04:35 AM UTC-7
> julian...@googlemail.com wrote:
>
>> That's awesome! (though I'm slightly surprised there isn't an easier
>> way).
>>
>> Thanks.
>>
>>
>> On Tuesday, 23 November 2010 21:03:37 UTC, Tyler Perkins wrote:
>>>
>>> Nice! And with just a bit more, we have a clean, sorting DSL:
>>>
>>> (def asc compare)
>>> (def desc #(compare %2 %1))
>>> ;;  compare-by generates a Comparator:
>>> (defn compare-by [& key-cmp-pairs]
>>>   (fn [x y]
>>>   (loop [[k cmp & more] key-cmp-pairs]
>>>  (let [result (cmp (k x) (k y))]
>>>   (if (and (zero? result) more)
>>>   (recur more)
>>>   result)
>>>
>>> (sort (compare-by :last-name asc, :date-of-birth desc) coll)
>>
>> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/clojure/769d3b44-e1dc-43f4-8728-7ecfdce86e79n%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/CAKvLtDZEuD3%3DAzGW0HHC5-NGwbSba0hyUnLTn4vOPkWvWuGrgQ%40mail.gmail.com.


Re: sort-by reverse order?

2020-10-14 Thread Matthew O. Smith
Google brought this up in 2020

Try
(comp - compare)



On Tuesday, December 23, 2014 at 10:04:35 AM UTC-7 julian...@googlemail.com 
wrote:

> That's awesome! (though I'm slightly surprised there isn't an easier way). 
>
> Thanks. 
>
>
> On Tuesday, 23 November 2010 21:03:37 UTC, Tyler Perkins wrote:
>>
>> Nice! And with just a bit more, we have a clean, sorting DSL: 
>>
>> (def asc compare) 
>> (def desc #(compare %2 %1)) 
>> ;;  compare-by generates a Comparator: 
>> (defn compare-by [& key-cmp-pairs] 
>>   (fn [x y] 
>>   (loop [[k cmp & more] key-cmp-pairs] 
>>  (let [result (cmp (k x) (k y))] 
>>   (if (and (zero? result) more) 
>>   (recur more) 
>>   result) 
>>
>> (sort (compare-by :last-name asc, :date-of-birth desc) coll)
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/769d3b44-e1dc-43f4-8728-7ecfdce86e79n%40googlegroups.com.