所以我将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)
答案 0 :(得分:3)
sortScore
正在返回3元组列表,但remove
只接受一个元组。
您可以使用map
将remove
应用于从sortScore
map remove (sortScore b h)
答案 1 :(得分:0)
您需要使用map
转换列表sortScore b h
中的每个元组:
map remove $ sortScore b h
您不能仅将remove
应用于sortScore b h
,因为最后一个是列表,但remove
适用于元组。