Haskell-按最后一个元组元素对元组进行排序的列表

时间:2018-11-22 18:34:35

标签: haskell

我一直在尝试通过 d 元素对列表[(a,b,c,d),(e,f,g,h)]进行排序的方法。

到目前为止,我已经尝试过: sortBy(比较on snd),但是我找不到找到第四个元素的方法,而不是第二个。< / p>

我的输出必须相同,但要有序。

谢谢!

2 个答案:

答案 0 :(得分:6)

专门为两个元组提供了

fstsnd作为便利功能。但是,您可以非常轻松地编写一个适用于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` ...相同)