Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell-按最后一个元组元素对元组进行排序_Haskell - Fatal编程技术网

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

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))

我一直在试图找到一种方法,通过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))


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)