1

假设我有元组列表:

[('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)

想法?

4

1 回答 1

5

当您这样做时c <- x,您将c用作列表中单个元素的名称x,并且c您应该在其上运行snd x > 0.0而不是x. 所以把最后一个x改成c.

于 2013-10-15T21:01:42.800 回答