Haskell-按最后一个元组元素对元组进行排序
我一直在试图找到一种方法,通过d元素对列表[(a,b,c,d),(e,f,g,h)]进行排序 到目前为止,我已经尝试过:排序(比较Haskell-按最后一个元组元素对元组进行排序,haskell,Haskell,我一直在试图找到一种方法,通过d元素对列表[(a,b,c,d),(e,f,g,h)]进行排序 到目前为止,我已经尝试过:排序(比较上的snd)但是我找不到一种方法来获得第四个元素,而不是第二个元素 我的输出必须相同,但顺序不同 提前谢谢 您可以定义自己的投影 get4thOf4 :: (a,b,c,d) -> d get4thOf4 (_,_,_,d) = d 之后,您可以使用排序(比较get4thof4) 或者,使用lambda:sortBy(比较(\(\,\uu,\ud)->d))
上的snd)
但是我找不到一种方法来获得第四个元素,而不是第二个元素
我的输出必须相同,但顺序不同
提前谢谢 您可以定义自己的投影
get4thOf4 :: (a,b,c,d) -> d
get4thOf4 (_,_,_,d) = d
之后,您可以使用排序(比较get4thof4)
或者,使用lambda:sortBy(比较(\(\,\uu,\ud)->d))
(
comparing…
与compare`on`.
的意思相同)fst
和snd
是专门为2元组提供的方便函数。但是,您可以非常轻松地编写一个适用于4元组的函数
frth :: (a, b, c, d) -> d
frth (_, _, _, d) = d
然后
非常感谢你!或者只是
sortOn frth
sortBy(compare`on`f)
=sortBy(comparing f)
=sortOn f
sortBy (compare `on` frth)