在不使用sortBy的情况下,按第二个元素对元组列表进行排序

use*_*857 2 haskell tuples list

假设函数的输入是:

[(6,-275),(3,123),(7,1000),(9,-572),(3,333),(1,-23)]
Run Code Online (Sandbox Code Playgroud)

输出应该是:

[(9,-572),(6,-275),(1,-23),(3,123),(3,333),(7,1000)]
Run Code Online (Sandbox Code Playgroud)

这是我想要的功能:

sortBySnd :: Ord a => [(a,a)] -> [(a,a)]
sortBySnd [] = []
sortBySnd [(_,a),(_,b)]
    | a < b = [(_,a),(_,b)]
    | a > b = [(_,b),(_,a)]
    | a == b = [(_,a),(_,b)]
Run Code Online (Sandbox Code Playgroud)

这当然是非常错误的,但我只想展示我想要实现的目标.

对于排序函数,可以使用mergesort或除sortBy之外的一些内置排序函数.

Car*_*ten 5

这就是我的意思:

import Data.List (sort)
import Data.Tuple (swap)

sortT = map swap . sort . map swap
Run Code Online (Sandbox Code Playgroud)

  • 当然,这不是一个稳定的类型. (2认同)