Ume*_*ghe 4 haskell tuples list pattern-matching
我有这样的功能:
selectValue1 :: Int -> [(Int,Int)] -> [Int]
selectValue1 a [(x,y)]= [ y |(x,y)<-[(x,y)],x<-(x,y),x==a ]
Run Code Online (Sandbox Code Playgroud)
我想要做的是将元组列表传递给函数,如果元组中的第一项与输入a匹配,则取元组中的第二项.但是这个函数给我一个错误:
Type error in generator
*** Term : (x,y)
*** Type : (Int,Int)
*** Does not match : [a]
Run Code Online (Sandbox Code Playgroud)
为什么会这样???上面的任务怎么办?有解决方案?? 谢谢你们..:)
selectValue1 a xs = [ y | (x,y) <- xs, x == a ]
Run Code Online (Sandbox Code Playgroud)
首先,您不应该在定义的左侧匹配模式.你只是给你的论点命名 - 在里面看,可以说,所有这些都可以在列表理解中发生.其次,x < - (x,y)毫无意义.列表理解中箭头的rhs始终是列表.在这种情况下,它什么也没做,所以我删除了它.