对 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 的元组(因此显然没有必要为 thd
或 fth
编写访问器函数):
(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
我想按类型列表中的第三个或第四个元素(例如 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]
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