我写了一个小代码,它计算列表中的字符或数字以及次数。 例如如何多次 3 [2, 3, 4, 5, 3, 3, 1, 80, 3] 应该是 4
这是我的代码
howManyTimes y [] = 0
howManyTimes y xs = howManyIntern y (x:xs) acc
| x == y = howManyIntern y xs (acc + 1)
| otherwise = howManyIntern y xs acc
我收到此错误消息。不在范围内的变量: howManyTimes :: 整数 -> [整数] -> t
谁能给我一个提示?
我已经重写了我的代码。我不再收到错误,但输出为 0
howManyTimes y xs = howManyIntern y xs 0
where howManyIntern y [] acc = 0
howManyIntern y (x:xs) acc | x == y = howManyIntern y xs (acc + 1)
| otherwise = howManyIntern y xs acc
自表达式以来,注释中上述代码的输出为 0:
howManyIntern y [] acc = 0
每当它完成计数时返回 0。通过返回acc
很容易修复:
howManyIntern y [] acc = acc
另一种使用现有函数的方法:
howManyTimes y xs = length $ filter (==y) xs