对 haskell 列表中的元组进行排序

Sorting tuples in haskell lists

我想按类型列表中的第三个或第四个元素(例如 c 或 d)对元组列表进行排序:

myList = [(a,b,c,d,e)]

我知道元组是否属于(a,b)类型我可以使用以下方法:

mySort xmyList = sortBy (compare `on` snd) x

但是 sortBy 的类型不适用于长度大于 2 的元组(因此显然没有必要为 thdfth 编写访问器函数):

(a -> a -> Ordering) -> [a] -> [a]

But the type of sortBy will not work on tuples with length greater than two

不,它实际上适用于任何列表。例如,如果您想对 c 进行排序,只需执行:

mySort xmyList = sortBy (compare `on` (\(a,b,c,d,e) -> c)) x

mySort xmyList = sortBy (comparing thirdOf5) x
   where thirdOf5 (_,_,c,_,_) = c