Haskell List理解打印只有偶数

时间:2014-12-10 19:37:29

标签: list haskell

 let nums = [4,5,2,6,2,6,44,1213]

我必须使用列表推导来过滤由nums定义的列表,这样它就不包含任何偶数或任何大于50的数字

我不知道为什么我无法解决这个问题!

 [x | x <- [nums], x == even, x <= 50]

2 个答案:

答案 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。您也不应该将xeven进行比较。 even是一个函数,而不是一个值,它的类型为even :: Int -> Bool,因此请将其用作even x。这就像说x == (<= 50),这没什么意义。