【发布时间】:2014-11-03 10:49:48
【问题描述】:
我实现了一个可以计算数字列表并在列表中产生多少个偶数的函数,我使用递归实现了,但这次我需要列表理解。 我确实尝试过使用列表理解,但是一旦我执行了这个函数,它就会挂起,它什么也没给我。这是我的代码:
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..]包含无限个偶数 - 这就是countEven挂起的原因。 -
你是对的,我的错:(我只是想出来我是 Haskell 的一个新人,有什么想法可以代替吗?我试图输入 [1..n] 但它不起作用?
-
您的
countEven函数看起来不错。你想让evenList函数做什么? -
永远不要使用
x == True,只使用x。
标签: list haskell list-comprehension