List 在元组列表中搜索

List 在元组列表中搜索,list,haskell,List,Haskell,我是哈斯凯尔的新人,我有一些问题。 在阅读了关于高阶函数的内容后,我试图解决一些关于元组的练习 我有一个元组列表,类似这样: list tup = [("James",19,"SB",2),("Patrick",19,"FDF",4),("Jim",20,"CD",3)] 其中一个问题是比较元组的位置,例如: 获取更高的年龄(元组中的snd元素),如下所示: higherAge tup >20 我想说的是: higherAge ls = maximum (filter (get2th

我是哈斯凯尔的新人,我有一些问题。 在阅读了关于高阶函数的内容后,我试图解决一些关于元组的练习

我有一个元组列表,类似这样:

list tup = [("James",19,"SB",2),("Patrick",19,"FDF",4),("Jim",20,"CD",3)]
其中一个问题是比较元组的位置,例如: 获取更高的年龄(元组中的snd元素),如下所示:

higherAge tup
>20
我想说的是:

higherAge ls = maximum (filter (get2th ls))

get2th (_,a,_,_,_) = a

以下是一种方法:

maxAge l = maximumBy (compare `on` (\(a,b,c,d) -> b)) l
解决方案的问题在于未正确使用
过滤器<代码>过滤器
只是从列表中删除元素,它只能使列表变小。看起来您想要做的是使用
map


以下内容也应该有效:
maximum(map get2th)ls

Thank's@rafalio,还有一个问题,所以如果我想要一个元组中所有第四个元素的列表,我也可以使用map吗?像这样:(mapget4th),这应该返回一个包含所有第4个元素的列表?是的,这也可以!实际上,您需要有一个单独的函数来访问元组的每个元素,因为在Haskell中,您无法获得元组的任意值。让我知道这是否有帮助,或者您是否需要其他任何东西,或者您是否可以接受:)