我需要一点提示我的Haskell练习。
首先我必须实现一个程序,它检查一个整数是否是偶数...我的代码到目前为止,这是完美的
isEven :: Int -> Bool
isEven 0 = True
isEven (-1) = False
isEven 1 = False
isEven x
|x<0 = isEven (x+2)
|x>0 = isEven (x-2)
接下来,我必须使用此函数来计算列表中的所有偶数整数。 我到目前为止的代码:
countEven :: [Int] -> Int
countEven (x:xs) = (isEven x)
|True = 1 + countEven xs
|False = 0 + countEven xs
我想使用isEven-returncode(True | False)来确定是否计算我的Int。我不知道如何继续编写这个脚本。
在这种情况下,它说
在输入&#39; |&#39;
上解析错误
我尝试了另一个脚本并在那里发出错误
无法匹配期望的类型&#39; Int&#39;实际类型&#39; Bool&#39;。
因此函数isEven
正在运行,但我并不确切知道如何将&#34; True&#34; -statement转换为我的if语句。
答案 0 :(得分:4)
以下任何工作:
countEven (x:xs) = if isEven x then 1 + countEven xs else 0 + countEven xs
countEven (x:xs) = (if isEven x then 1 else 0) + countEven xs
countEven (x:xs) = case isEven x of
True -> 1 + countEven xs
False -> 0 + countEven xs
countEven (x:xs)
| isEven x = 1 + countEven xs
| otherwise = 0 + countEven xs