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

时间:2015-02-07 13:51:23

标签: list haskell tuples

我想在类型列表中按第三或第四个元素(比如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]

1 个答案:

答案 0 :(得分:4)

  

但sortBy的类型不适用于长度更大的元组   不止两个

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

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

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