降順ソート
(reverse . sort) 的なことをしたい時は
rSort :: (Ord a) => [a] -> [a] rSort = sortBy (flip compare)
でいいんだろか。compare関数はPerl/Rubyでいう <=>
一般化を考える
sortBy (flip compare) が sortBy compare の逆順となるように、
一般に sortBy f の逆順は sortBy (flip f) で出来るので、次のように rSortBy を定義できる。
rSortBy :: (a -> a -> Ordering) -> [a] -> [a] rSortBy = sortBy . flip -- rSortByと比較関数で降順ソートを定義 rSort :: (Ord a) => [a] -> [a] rSort = rSortBy compare -- 第2要素の比較による降順ソート rSortSnd :: (Ord b) => [(a,b)] -> [(a,b)] rSortSnd = rSortBy (Data.Ord.comparing snd)