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

时间:2014-11-20 23:47:09

标签: haskell tuples

所以我将3元组列表传递给这个函数,并希望返回该元组的第一个和第三个元素,为什么这里的代码不起作用?

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)

2 个答案:

答案 0 :(得分:3)

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

您可以使用mapremove应用于从sortScore

返回的每个元素
map remove (sortScore b h)

答案 1 :(得分:0)

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

map remove $ sortScore b h

您不能仅将remove应用于sortScore b h,因为最后一个是列表,但remove适用于元组。