let nums = [4,5,2,6,2,6,44,1213]
我必须使用列表推导来过滤由nums定义的列表,这样它就不包含任何偶数或任何大于50的数字
我不知道为什么我无法解决这个问题!
[x | x <- [nums], x == even, x <= 50]
答案 0 :(得分:4)
要过滤不大于50的偶数:
[x | x <- nums, even x, x <= 50]
过滤不大于50的奇数:
[x | x <- nums, not $ even x, x <= 50]
答案 1 :(得分:4)
试试[x | x <- nums, even x, x <= 50]
。 nums
已经是一个列表,当您在其周围添加额外的方括号时,这意味着x
将遍历列表[nums]
中的元素,而不是列表nums
。您也不应该将x
与even
进行比较。 even
是一个函数,而不是一个值,它的类型为even :: Int -> Bool
,因此请将其用作even x
。这就像说x == (<= 50)
,这没什么意义。