假设我有元组列表:
[('X', 3.0), ('B', 0.0), ('N', 4.33)]
我想要一个从第二个元素为0或更低的列表中删除所有元组的函数。我的尝试:
dELS :: [(Char, Float)] -> [(Char, Float)]
dELS x = [c | c <- x, snd x > 0.0]
但那会回来......
*** Expression : snd x
*** Term : x
*** Type : [(Char,Float)]
*** Does not match : (a,b)
思想?
答案 0 :(得分:5)
执行c <- x
时,您使用c
作为列表x
中单个元素的名称,并且c
表示您应该运行snd x > 0.0
{ {1}}而不是x
。因此,请将最后x
更改为c
。