我一直在尝试通过 d 元素对列表[(a,b,c,d),(e,f,g,h)]进行排序的方法。
到目前为止,我已经尝试过: sortBy(比较on
snd),但是我找不到找到第四个元素的方法,而不是第二个。< / p>
我的输出必须相同,但要有序。
谢谢!
答案 0 :(得分:6)
fst
和snd
作为便利功能。但是,您可以非常轻松地编写一个适用于4元组的函数。
frth :: (a, b, c, d) -> d
frth (_, _, _, d) = d
然后
sortBy (compare `on` frth)
答案 1 :(得分:4)
您可以定义自己的投影
get4thOf4 :: (a,b,c,d) -> d
get4thOf4 (_,_,_,d) = d
之后,您可以使用sortBy (comparing get4thof4)
。
或者,使用Lambda:sortBy (comparing (\(_,_,_,d) -> d))
({comparing ...
的含义与compare `on` ...
相同)