sortBy :: (a -> a -> Ordering) -> [a] -> [a]
data Ordering = LT | EQ | GT
sortOn :: Ord b => (a -> b) -> [a] -> [a]