我想在类型列表中按第三或第四个元素(比如c或d)对元组列表进行排序:
myList = [(a,b,c,d,e)]
我知道元组的类型是(a,b)
我可以使用以下方法:
mySort xmyList = sortBy (compare `on` snd) x
但sortBy的类型不适用于长度大于2的元组(显然没有必要为thd
或fth
编写访问器函数):
(a -> a -> Ordering) -> [a] -> [a]
答案 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