从列表中获取第3个元素的第一个元素和第二个元素 - Haskell

问题描述:

因此,我将一个3元组列表传递给该函数,并且想要返回该元组的第一个和第三个元素,为什么这里的代码不工作?从列表中获取第3个元素的第一个元素和第二个元素 - Haskell

remove :: (a, b, c) -> (a,c) 
remove (x, _, y) = (x,y) 

我得到的错误是

*** Expression  : remove (sortScore b h) 
*** Term   : sortScore b h 
*** Type   : [(Val,Int,End)] 
*** Does not match : (a,b,c) 

sortScore返回3元组列表,但remove只接受一个。

您可以使用map申请remove给每个元素从sortScore返回

map remove (sortScore b h) 

您需要使用map列表sortScore b h变换每个元组:

map remove $ sortScore b h 

不能将remove只是sortScore b h因为最后一个是列表,但remove工作在元组上。

+0

好了,我的意思是说第一和第三,让我编辑 – Sprout 2014-11-20 23:54:51