<div dir="ltr"><div>There is a really nice solution that takes advantage of Ordering's Monoid instance (see <a href="https://wiki.haskell.org/Monoid">https://wiki.haskell.org/Monoid</a>).<br><br>The imports you need:<br><br>import Data.List (sortBy)<br>import Data.Ord (Down(..), comparing)<br>import Data.Monoid ((<>)) -- the “mappend” operator<br><br></div>You can then combine two calls to `comparing` <br><div><br>sortBy (comparing  (Down . snd) <> comparing fst) xs<br><br></div><div>(`Down` is just a newtype that reverses the ordering, since you wanted the first element in descending order and the second in ascending order.)<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, 13 Dec 2016 at 16:30 Francesco Ariis <<a href="mailto:fa-ml@ariis.it">fa-ml@ariis.it</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Dec 13, 2016 at 02:36:39PM +0000, mike h wrote:<br class="gmail_msg">
> Hi,<br class="gmail_msg">
><br class="gmail_msg">
> I’m trying to sort a list of tuples. A char and a count of that char (Char , Int)<br class="gmail_msg">
> e.g.<br class="gmail_msg">
><br class="gmail_msg">
> [ ('r',2), ('c',2),('a', 2), ('b',3), ('f',2)]<br class="gmail_msg">
><br class="gmail_msg">
> e.g. ‘r’ occurs twice etc.<br class="gmail_msg">
> The order should be based on the count first and then ties broken by the<br class="gmail_msg">
> natural ordering of char.<br class="gmail_msg">
<br class="gmail_msg">
You should provide sortBy with an appropriate compare function, e.g.<br class="gmail_msg">
<br class="gmail_msg">
    comp (a,b) (c,d) | a > c = GT<br class="gmail_msg">
                     | -- etc etc.<br class="gmail_msg">
<br class="gmail_msg">
or go with the manky but working hack:<br class="gmail_msg">
<br class="gmail_msg">
λ> :m Data.List<br class="gmail_msg">
λ> sortOn (\(a, b) -> b*(-100) + fromEnum a) [('r',2), ('c',2),('a', 2), ('b',3), ('f',2)]<br class="gmail_msg">
[('b',3),('a',2),('c',2),('f',2),('r',2)]<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
Beginners mailing list<br class="gmail_msg">
<a href="mailto:Beginners@haskell.org" class="gmail_msg" target="_blank">Beginners@haskell.org</a><br class="gmail_msg">
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" class="gmail_msg" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br class="gmail_msg">
</blockquote></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr">Erlend Hamberg<div><a href="mailto:erlend@hamberg.no">erlend@hamberg.no</a></div></div></div>