用列表理解计算偶数数字haskell?

时间:2014-11-03 02:29:08

标签: list haskell list-comprehension

我实现了一个可以计算数字列表的函数,并生成列表中有多少偶数,我使用递归实现,但我需要这次使用列表理解。 我确实尝试使用列表理解,但是一旦我执行了该函数,它就会挂起,它什么也没给我。这是我的代码:

countEven :: (Integral t, Num a) => [t] -> a
countEven [] = 0
countEven  (x:xs)
    | ev == True    = 1 + (countEven xs )
    | otherwise     = countEven xs
    where ev    = even x

这是我尝试使用列表理解:

evenList :: (Integral t, Num a) => [t] -> a
evenList xs =  countEven [x | x <- [1..]]

1 个答案:

答案 0 :(得分:3)

列表推导可用于生成其他列表,但不能用于计数。因此,您需要将列表理解与其他内容相结合,例如

countEvens :: [Int] -> Int
countEvens l = length [ x | x <- l, even x ]

这里,列表理解只生成一个包含所有偶数的子列表,length完成了这项工作。